Synchronize multiple Pi-hole instances

Overview

Logo

Orbital Sync

Tests Coverage Release Version

Orbital Sync synchronizes multiple Pi-hole instances for high availability (HA) using the built-in "teleporter". In other words, it performs a "backup" in the Pi-hole admin interface of your primary Pi-hole instance, and then "restores" that backup to any number of "secondary" Pi-holes also via their admin interface. As a result, it supports the synchronization of anything currently supported by Pi-hole's "teleporter". See "Configuration" for the defaults.

Alternatives

I love Gravity Sync and have used it for some time, but I personally find it to be difficult to set up in some contexts (Docker, Unraid, Synology, etc.). Orbital Sync's approach is designed to rely less on the servers running Pi-hole by instead acting on their admin interface just like you would.

Why would I want multiple Pi-holes?

Ever had the server running your Pi-hole go down? Or have you ever needed to perform maintenance on that server? This can obviously be extremely disruptive to anyone using your network. By running multiple Pi-hole instances (replicas) and giving your network clients secondary/tertiary/etc DNS servers, any outage involving one of your Pi-hole instances doesn't bring down your whole network.

Getting Started

Set up your secondary Pi-hole instance(s) just like you did your primary. Once that's done, choose one of the following:

Docker

Docker Pulls Docker Image Size

The following is an example Docker Compose file for running this project. See the configuration section for more environment variables.

version: '3'
services:
  orbital-sync:
    image: mattwebbio/orbital-sync:1
    environment:
      PRIMARY_HOST_BASE_URL: 'https://pihole1.example.com'
      PRIMARY_HOST_PASSWORD: 'your_password1'
      SECONDARY_HOST_1_BASE_URL: 'https://pihole2.example.com'
      SECONDARY_HOST_1_PASSWORD: 'your_password2'
      SECONDARY_HOST_2_BASE_URL: 'http://192.168.1.3'
      SECONDARY_HOST_2_PASSWORD: 'your_password3'
      INTERVAL_MINUTES: 30

The Orbital Sync Docker image is published to both DockerHub and the GitHub Package Repository:
mattwebbio/orbital-sync
ghcr.io/mattwebbio/orbital-sync

Node

NPM Downloads

As with Docker, running with Node requires you export any required environment variables before running Orbital Sync. See the configuration section for more information.

npm install -g orbital-sync
orbital-sync

Requirements

The admin web interfaces of all Pi-holes must be accessible by the container/server running this service. In other words, they have to be on the same network.

It is recommended you run this service with Docker.

Configuration

Sync Configuration

Environment Variable Required Default Examples Description
PRIMARY_HOST_BASE_URL Yes N/A http://192.168.1.2 or https://pihole.example.com The base URL of your Pi-hole, including the scheme (HTTP or HTTPS) and port but not including a following slash.
PRIMARY_HOST_PASSWORD Yes N/A mypassword The password used to log in to the admin interface.
SECONDARY_HOST_(#)_BASE_URL Yes N/A http://192.168.1.3 or https://pihole2.example.com The base URL of your secondary Pi-hole, including the scheme (HTTP or HTTPS) and port but not including a following slash. Replace (#) with a number, starting at 1, to add multiple secondary Pi-holes.
SECONDARY_HOST_(#)_PASSWORD Yes N/A mypassword2 The password used to log in to the admin interface.
INTERVAL_MINUTES No 30 Any non-zero positive integer, for example 5, 30, or 1440 How long to wait between synchronizations. Defaults to five minutes. Remember that the DNS server on your secondary servers restarts everytime a sync is performed.
SYNC_WHITELIST No true true/false Copies the whitelist
SYNC_REGEX_WHITELIST No true true/false Copies the regex whitelist
SYNC_BLACKLIST No true true/false Copies the blacklist
SYNC_REGEXLIST No true true/false Copies the regex blacklist
SYNC_ADLIST No true true/false Copies the adlist
SYNC_CLIENT No true true/false Copies clients
SYNC_GROUP No true true/false Copies groups
SYNC_AUDITLOG No false true/false Copies the audit log
SYNC_STATICDHCPLEASES No false true/false Copies static dhcp leases
SYNC_LOCALDNSRECORDS No true true/false Copies local DNS records
SYNC_LOCALCNAMERECORDS No true true/false Copies local CNAME records
SYNC_FLUSHTABLES No true true/false Clears existing data on the secondary (copy target) Pi-hole
RUN_ONCE No false true/false By default, orbital-sync runs indefinitely until stopped. Setting RUN_ONCE to true forces it to exit immediately after the first sync.

Secondary hosts must be sequential (SECONDARY_HOST_1_BASE_URL, SECONDARY_HOST_2_BASE_URL, SECONDARY_HOST_3_BASE_URL, and so on) and start at number 1. Any gaps (for example, 3 to 5 skipping 4) will result in hosts after the gap being skipped in the sync process.

Notifications

Environment Variable Required Default Examples Description
NOTIFY_ON_SUCCESS No false true/false Send a notification if a sync completes successfully.
NOTIFY_ON_FAILURE No true true/false Send notifications if a sync fails for any reason.
NOTIFY_VIA_SMTP No false true/false Send notifications via email.
HONEYBADGER_API_KEY No N/A hbp_xxxxxxxxxxxxxxxxxx Get notifications to honeybadger.io when the process crashes for any reason by creating a new project and putting your API key here.
VERBOSE No false true/false Increases the verbosity of log output. Useful for debugging.
TZ No N/A America/Los_Angeles The timezone for the timestamps displayed in log output.

SMTP

Environment Variable Required Default Examples Description
SMTP_HOST Yes N/A smtp.example.com The SMTP server host.
SMTP_PORT No 587 25/587/465 The SMTP server port.
SMTP_TLS No false true/false Should usually be set to true if using port 465. Otherwise, leave as is.
SMTP_USER No N/A [email protected] The SMTP account username.
SMTP_PASSWORD No N/A yourpasswordhere The SMTP account password.
SMTP_FROM No N/A [email protected] The email address to send notifications from.
SMTP_TO Yes N/A [email protected] The email address to send notifications to. Can be a comma-seperated list.

Disclaimer

GitHub

This project is not associated with the official Pi-hole project and is a community maintained piece of software. See the license.

Pi-hole is a registered trademark of Pi-hole LLC.

Comments
  • Local DNS records are synced when they shouldn't be

    Local DNS records are synced when they shouldn't be

    What happened?

    I'm syncing two piholes (two docker containers), but do not want them to sync local DNS records, because of the different networks they operate in.

    However, the SYNC_LOCALDNSRECORDS is being ignored. I've tried using SYNC_LOCALDNSRECORDS: 'false' and SYNC_LOCALDNSRECORDS: 0, to no avail.

    This is my config:

      orbital-sync-2:
        image: mattwebbio/orbital-sync:1
        container_name: pihole-sync-vpn
        environment:
          PRIMARY_HOST_BASE_URL: 'http://192.168.1.200'
          PRIMARY_HOST_PASSWORD: ''
          SECONDARY_HOST_1_BASE_URL: 'http://192.168.1.202'
          SECONDARY_HOST_1_PASSWORD: ''
          SYNC_LOCALDNSRECORDS: 'false' #different IPs
          UPDATE_GRAVITY: 'false'
          TZ: 'Europe/Amsterdam'
          INTERVAL_MINUTES: 1440
    

    Version

    latest

    Log output

    10-11-2022 10:59:55
    11/10/2022, 10:59:55 AM: ➡️ Signing in to http://192.168.1.200/admin...
    10-11-2022 10:59:55
    11/10/2022, 10:59:55 AM: ✔️ Successfully signed in to http://192.168.1.200/admin!
    10-11-2022 10:59:55
    11/10/2022, 10:59:55 AM: ➡️ Downloading backup from http://192.168.1.200/admin...
    10-11-2022 10:59:56
    11/10/2022, 10:59:56 AM: ✔️ Backup from http://192.168.1.200/admin completed!
    10-11-2022 10:59:56
    11/10/2022, 10:59:56 AM: ➡️ Signing in to http://192.168.1.202/admin...
    10-11-2022 10:59:56
    11/10/2022, 10:59:56 AM: ✔️ Successfully signed in to http://192.168.1.202/admin!
    10-11-2022 10:59:56
    11/10/2022, 10:59:56 AM: ➡️ Uploading backup to http://192.168.1.202/admin...
    10-11-2022 11:00:19
    11/10/2022, 11:00:19 AM: ✔️ Backup uploaded to http://192.168.1.202/admin!
    10-11-2022 11:00:19
    11/10/2022, 11:00:19 AM: ✔️ Success: 1/1 hosts synced.
    10-11-2022 11:00:19
    11/10/2022, 11:00:19 AM: Waiting 1400 minutes...
    
    opened by MJVerhulst 12
  • Allow paths to pi-hole that don't contain /admin

    Allow paths to pi-hole that don't contain /admin

    What feature would you like added?

    Hello,

    My main pi-hole is reachable at something like https://mydomain.com/pihole. Because it's behind a reverse proxy, I ended up hiding the /admin part of the path.

    I've built my own version now that has removed it, I can make a PR with a configuration option that allows more control over the URL if you think this would be a welcome addition.

    Version

    latest

    Log output

    No response

    opened by cbundy 6
  • Gravity Sync

    Gravity Sync

    What feature would you like added?

    Based upon a fresh instance of pihole on both docker tenants.

    Feature

    Once the teleport completes successfully, then trigger gravity sync on the secondary pihole.

    Observations

    I noticed that after a successful sync between master and secondary pihole tenants, the adlists on the secondary did not appear to be downloaded.

    https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

    Health status of this list: | List was not downloaded so far -- | -- This list was added to Pi-hole | 2 hours ago (2022-09-14 19:34:54) Database entry was last modified | 8 minutes ago (2022-09-14 21:51:22) The list contents were last updated | N/A Number of domains on this list: | N/A Number of invalid domains on this list: | N/A Database ID of this list: | 1

    Version

    1.1.1 (latest)

    Log output

    No response

    opened by mentalsoup 6
  • Additional notification options

    Additional notification options

    What feature would you like added?

    I would like to be able to send sync notifications for success/failure of orbital-sync to either/or: Telegram chat group Gotify server

    Version

    1.1.1 (latest)

    Log output

    No response

    opened by mentalsoup 5
  • Configure remote paths

    Configure remote paths

    Adds a new Environment Variable PRIMARY/SECONDARY...PATH for primary and secondary servers

    • Allows users to override the default path that their Pi-hole web interface is available under
    • Introduces a new class for managing the host configuration
    • Handles many combinations of Base URL and Path that could already exist

    This is quite noisy, but I hope I can make up by making sure it's at least well tested....

    I tried a simpler approach, but while it worked it left some confusion in the codebase around baseUrl, so I've moved everything to use fullUrl and now we have both path and baseUrl as two separate values. This can be undone if it seems unnecessary.

    I've tried to ensure that I catch as many backward compatibility tests it needs, such as if people are already providing some path within their baseUrl (because the need here was to remove the default /admin value only). I've made the assumption that there are people out there who may already be defining some path values in their baseUrl, this approach should not cause any impact for them.

    I've never used typescript and I'm not really a practiced JS developer, so let me know if anything seems out of place or where I could make improvements.


    Closes https://github.com/mattwebbio/orbital-sync/issues/62

    opened by cbundy 3
  • Bump @typescript-eslint/parser from 5.42.0 to 5.47.0

    Bump @typescript-eslint/parser from 5.42.0 to 5.47.0

    Bumps @typescript-eslint/parser from 5.42.0 to 5.47.0.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.47.0

    5.47.0 (2022-12-19)

    Features

    • eslint-plugin: [no-floating-promises] add suggestion fixer to add an 'await' (#5943) (9e35ef9)

    v5.46.1

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/typescript-eslint

    v5.46.0

    5.46.0 (2022-12-08)

    Bug Fixes

    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#6079) (d91a5fc)

    Features

    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#6174) (8a91cbd)

    v5.45.1

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.47.0 (2022-12-19)

    Note: Version bump only for package @​typescript-eslint/parser

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/parser

    5.46.0 (2022-12-08)

    Note: Version bump only for package @​typescript-eslint/parser

    5.45.1 (2022-12-05)

    Bug Fixes

    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    5.45.0 (2022-11-28)

    Note: Version bump only for package @​typescript-eslint/parser

    5.44.0 (2022-11-21)

    Note: Version bump only for package @​typescript-eslint/parser

    5.43.0 (2022-11-14)

    Note: Version bump only for package @​typescript-eslint/parser

    5.42.1 (2022-11-07)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @honeybadger-io/js from 4.7.4 to 4.8.0

    Bump @honeybadger-io/js from 4.7.4 to 4.8.0

    Bumps @honeybadger-io/js from 4.7.4 to 4.8.0.

    Release notes

    Sourced from @​honeybadger-io/js's releases.

    v4.8.0

    4.8.0 (2022-12-12)

    Features

    • add window / document checks, refactor XMLHttpRequest to Fetch (#958) (b7e717f)

    v4.7.5

    4.7.5 (2022-12-05)

    Note: Version bump only for package root

    Changelog

    Sourced from @​honeybadger-io/js's changelog.

    4.8.0 (2022-12-12)

    Features

    • add window / document checks, refactor XMLHttpRequest to Fetch (#958) (b7e717f)

    4.7.5 (2022-12-05)

    Note: Version bump only for package root

    Commits
    • a5fd0e9 v4.8.0
    • d723735 chore(deps): bump qs and body-parser in /packages/js/test/integration (#977)
    • 49c3302 chore(deps): bump qs and express in /packages/js/examples/express (#978)
    • 18ccecf chore(deps): bump qs and formidable in /packages/js/examples/aws-lambda-types...
    • 8603573 chore(deps): bump qs and formidable in /packages/js (#974)
    • ac8b411 Merge pull request #972 from honeybadger-io/BKB/eslint-example-node-modules
    • b7e717f feat: add window / document checks, refactor XMLHttpRequest to Fetch (#958)
    • 3c6885f Ignore eslint imports in example folders
    • 287eb50 chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in /packages/vue (...
    • 232135c chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in react/example (...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @typescript-eslint/parser from 5.42.0 to 5.46.1

    Bump @typescript-eslint/parser from 5.42.0 to 5.46.1

    Bumps @typescript-eslint/parser from 5.42.0 to 5.46.1.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.46.1

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/typescript-eslint

    v5.46.0

    5.46.0 (2022-12-08)

    Bug Fixes

    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#6079) (d91a5fc)

    Features

    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#6174) (8a91cbd)

    v5.45.1

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)

    v5.44.0

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/parser

    5.46.0 (2022-12-08)

    Note: Version bump only for package @​typescript-eslint/parser

    5.45.1 (2022-12-05)

    Bug Fixes

    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    5.45.0 (2022-11-28)

    Note: Version bump only for package @​typescript-eslint/parser

    5.44.0 (2022-11-21)

    Note: Version bump only for package @​typescript-eslint/parser

    5.43.0 (2022-11-14)

    Note: Version bump only for package @​typescript-eslint/parser

    5.42.1 (2022-11-07)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @typescript-eslint/eslint-plugin from 5.46.0 to 5.46.1

    Bump @typescript-eslint/eslint-plugin from 5.46.0 to 5.46.1

    Bumps @typescript-eslint/eslint-plugin from 5.46.0 to 5.46.1.

    Release notes

    Sourced from @​typescript-eslint/eslint-plugin's releases.

    v5.46.1

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/typescript-eslint

    Changelog

    Sourced from @​typescript-eslint/eslint-plugin's changelog.

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @types/node from 18.8.0 to 18.11.17

    Bump @types/node from 18.8.0 to 18.11.17

    Bumps @types/node from 18.8.0 to 18.11.17.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @typescript-eslint/eslint-plugin from 5.44.0 to 5.45.0

    Bump @typescript-eslint/eslint-plugin from 5.44.0 to 5.45.0

    Bumps @typescript-eslint/eslint-plugin from 5.44.0 to 5.45.0.

    Release notes

    Sourced from @​typescript-eslint/eslint-plugin's releases.

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)
    Changelog

    Sourced from @​typescript-eslint/eslint-plugin's changelog.

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    Commits
    • 267da4e chore: publish v5.45.0
    • 2abadc6 feat(eslint-plugin): [member-ordering] add a required option for required vs....
    • 6e079eb fix(eslint-plugin): [prefer-readonly] report if a member's property is reassi...
    • f02761a fix(eslint-plugin): [member-ordering] support private fields (#5859)
    • ee62b0b chore: use no-restricted-syntax to enforce created options in rules (#6074)
    • 1f19998 fix(eslint-plugin): [keyword-spacing] prevent crash on no options (#6073)
    • 42b33af fix(eslint-plugin): [array-type] --fix flag removes parentheses from type (#5...
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @typescript-eslint/parser from 5.42.0 to 5.47.1

    Bump @typescript-eslint/parser from 5.42.0 to 5.47.1

    Bumps @typescript-eslint/parser from 5.42.0 to 5.47.1.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.47.1

    5.47.1 (2022-12-26)

    Bug Fixes

    • ast-spec: correct some incorrect ast types (#6257) (0f3f645)
    • eslint-plugin: [member-ordering] correctly invert optionalityOrder (#6256) (ccd45d4)

    v5.47.0

    5.47.0 (2022-12-19)

    Features

    • eslint-plugin: [no-floating-promises] add suggestion fixer to add an 'await' (#5943) (9e35ef9)

    v5.46.1

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/typescript-eslint

    v5.46.0

    5.46.0 (2022-12-08)

    Bug Fixes

    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#6079) (d91a5fc)

    Features

    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#6174) (8a91cbd)

    v5.45.1

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    v5.45.0

    5.45.0 (2022-11-28)

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.47.1 (2022-12-26)

    Note: Version bump only for package @​typescript-eslint/parser

    5.47.0 (2022-12-19)

    Note: Version bump only for package @​typescript-eslint/parser

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/parser

    5.46.0 (2022-12-08)

    Note: Version bump only for package @​typescript-eslint/parser

    5.45.1 (2022-12-05)

    Bug Fixes

    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    5.45.0 (2022-11-28)

    Note: Version bump only for package @​typescript-eslint/parser

    5.44.0 (2022-11-21)

    Note: Version bump only for package @​typescript-eslint/parser

    5.43.0 (2022-11-14)

    Note: Version bump only for package @​typescript-eslint/parser

    5.42.1 (2022-11-07)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Run gravity update on the primary

    Run gravity update on the primary

    What feature would you like added?

    With the upcoming feature completion on issue #28 I noticed that while the targets received and successfully processed a gravity update, the primary did not. Would it be possible to run a gravity update on the primary as either a pre sync step or post sync completion?

    Version

    1.2.2-beta.0

    Log output

    No response

    opened by mentalsoup 3
  • Docker secrets

    Docker secrets

    What feature would you like added?

    When running orbital-sync on a docker swarm there is the option to use secrets in place of sensitive data for environment variables within the docker-compose.yml. An example of such a file as follows

    version: "3.9"

    networks: mynetwork: external: true

    services: orbital-sync: image: mattwebbio/orbital-sync:latest networks: - mynetwork secrets: - pihole1_password - pihole2_password environment: - PRIMARY_HOST_BASE_URL=https://pihole1.mydomain.com - PRIMARY_HOST_PASSWORD_FILE=/run/secrets/pihole1_password - SECONDARY_HOST_1_BASE_URL=https://pihole2.mydomain.com - SECONDARY_HOST_1_PASSWORD_FILE=/run/secrets/pihole2_password - INTERVAL_MINUTES=30 deploy: restart_policy: condition: on-failure mode: global placement: constraints: [node.role == manager]

    secrets: pihole1_password: external: true pihole2_password: external: true

    When not in a swarm (standalone) secrets can also be declared within the compose file as an alternative:

    secrets: pihole1_password: file: $SECRETS_DIR/pihole1_password

    These are saved to the file system as straight text files with no extension defined.

    I would caveat this with the precedent that I run mine in a home lab with no external access. I am sure there are additional steps others may wish to take which would make this more secure, but given I would never expose my DSN resolvers to the world, then I feel my efforts are sufficient for the purpose.

    Version

    No response

    Log output

    No response

    opened by mentalsoup 1
Owner
Matt Webb
Software engineer and occasional musician. I like to make things.
Matt Webb
Script to synchronize between a Notion database and Google Calendar both ways. Uses Google App Script.

Yet Another Two Way Notion-Google Calendar Sync Script A script to sync events between Google calendar and a Notion database. Features! Google App Scr

kat 41 Jan 7, 2023
This is 2D Black Hole Visualization

Blackhole Live demo Blackhole Calculations How to run in your machine? Clone or download ZIP file Then open HTML file in VS code and run with live ser

Nikhil Yadav 13 Jan 7, 2023
N8n node for using the Pi-hole API

n8n Pi-hole API client This is an N8n community node. It allows you to use the Pi-hole API [1],[2], in your workflow. Most of the resources provided b

Hugo Alves 3 Oct 8, 2022
Website to test solving the rabbit hole challenge.

?? Rabbit in the Hole Challenge This website is designed to show solutions and possibilities for the Rabbit in the Hole Challenge. ?? What is the chal

Nícolas Gabriel 5 Oct 18, 2022
Use Cloudflare Gateway DNS/VPN to block ads, malware and tracking domains - free alternative to NextDNS, Pi-hole and Adguard

Cloudflare Gateway Pi-hole Scripts (CGPS) Cloudflare Gateway allows you to create custom rules to filter HTTP, DNS, and network traffic based on your

null 70 Aug 13, 2023
Command line tool to interact with exist-db instances (pre-release)

xst [ĭg-zĭst′] Command line tool to interact with exist-db instances. Built on top of @existdb/node-exist. Installation Until this package is official

Juri Leino 0 Aug 4, 2022
A minimalistic yet efficient way to stringify and revive instances via JSON.

json-instances Social Media Photo by Francisco J. Villena on Unsplash A minimalistic yet efficient way to stringify and revive instances via JSON. If

Andrea Giammarchi 11 Jun 23, 2022
🐞 A NodeJS module to access Bugzilla instances through the REST API.

Bugzilla | Typesafe access to Bugzilla's REST API. Very early work in progress, getting info from a bug or searching bugs is the main priority right n

Red Hat - Plumbers - Automation 3 Nov 1, 2022
Experience Lab is a set of utilities that assist in creating instances of Microsoft Energy Data Services, performing data loads, and performing basic management operations.

Experience Lab - Microsoft Energy Data Services Build Status About Experience Lab is an automated, end-to-end deployment accelerator for Microsoft Ene

Microsoft 9 Dec 14, 2022
An open-source, pretty, simple and fast meilisearch UI for managing your meilisearch instances

Meilisearch-UI An open-source, pretty, simple and fast meilisearch UI for managing your meilisearch instances [IMPORTANT] The main branch may be unsta

Kyrie Lrvinye 29 Dec 29, 2022
A simple web server exposing Hetzner cloud instances for consumption by the Prometheus HTTP service discovery.

Prometheus: Hetzner Service Discovery A server to provide automatic node discovery for Hetzner Cloud to Prometheus via HTTP service discovery. In cont

Matchory GmbH 1 Oct 10, 2022
Argon - extension for VS Code and plugin for Roblox allowing easy two-way sync of code and instances

About Argon is a simple two-way sync plugin for Roblox and extension for Visual Studio Code allowing developers not only to sync code but every possib

DARK 16 Dec 29, 2022
True P2P concept for your p2p powered website/app/client. MSC/MEP (Multiple Strategy Concept/Multiple Entry Points)

TRUE P2P CONCEPT - Lets redecentralize the web This repo is just conceptual. Active development of the endproduct (TRUE P2P) happens here https://gith

Bo 6 Mar 29, 2022
⚡🚀 Call multiple view functions, from multiple Smart Contracts, in a single RPC query!

ethers-multicall ⚡ ?? Call multiple view functions, from multiple Smart Contracts, in a single RPC query! Querying an RPC endpoint can be very costly

Morpho Labs 20 Dec 30, 2022
⚡Chrome extension allows you to create lists of Google and Github dork to open multiple tabs with one click, import "scope/out of scope" from #HackerOne #Bugcrowd #Intigriti ...

FastDork v0.1 This chrome extension allows you to create lists of Google and Github dork to open multiple tabs with one click, import "scope/out of sc

skvndr 74 Dec 31, 2022
Multiple hacks that breaks the game

blooket-hack All of the cheats are based on a game mode. So if you chose a gold quest game mode then you go to the gold folder and then use one of the

glizzz_y 493 Mar 5, 2022
A short project to automatically upload multiple pictures to pinata.cloud

Papel Mache Papel Mache is an app that uploads pictures to IPFS through pinata.cloud Requirements pinata/sdk: 1.1.14 node: 14.17.6 Node Node installat

Cardano Valley 7 Aug 18, 2022
A very simple tool that generates multiple spellings of a phone number (to effectively search for it using the OR operator and quotes)

phonenumberqueryconstructor A very simple tool that generates multiple writings of a phone number (to effectively search for it using the OR operator

Cyb_detective 10 Dec 7, 2022