@@ -37,26 +37,40 @@ issues, Actions artifacts, secrets, or submodule contents from other repositorie
37371 . Add ` https://github.com/drhdev/github-backup ` using the ** Docker Compose** build strategy.
3838 Set Base Directory to ` / ` and Docker Compose Location to ` /compose.yaml ` .
39392 . Keep one replica of each service and the persistent ` backup-cache ` volume.
40- 3 . Assign an ** HTTPS domain to ` github-setup ` , target port 8080** . If Coolify encodes
40+ 3 . Assign an ** HTTPS domain to ` github-config ` , target port 8080** . If Coolify encodes
4141 the target port in its domain field, use ` https://github-backup.example.com:8080 ` .
4242 The external URL remains ` https://github-backup.example.com ` on port 443.
4343 Leave ` github-backup ` without a domain or published port.
44444 . ** Disable automatic deployments, previews, and overlapping/rolling replacements.**
45- 5 . Set just these two required environment variables, keep the password masked, and deploy:
45+ 5 . Set the required config URL and deploy:
4646
4747``` dotenv
48- GITHUB_SETUP_URL=https://github-backup.example.com
49- GITHUB_SETUP_PASSWORD=REPLACE_WITH_OUTPUT_OF_OPENSSL_RAND_HEX_32
48+ GITHUB_CONFIG_URL=https://github-backup.example.com
5049```
5150
52- Generate the password with ` openssl rand -hex 32 ` . The URL must be the exact external HTTPS
53- origin without a path or internal ` :8080 ` suffix. Enable Buildtime and Runtime for supplied
54- values in Coolify. No Spaces credentials, bucket settings, GitHub App IDs or PEMs need to
55- be entered in the environment. See [ the deployment guide] ( docs/COOLIFY.md ) .
51+ The URL is the exact external HTTPS origin without a path or internal ` :8080 ` suffix.
52+ Enable Buildtime and Runtime in Coolify. No password, Spaces credentials, App IDs or PEMs
53+ need to be entered in the environment.
5654
57- ### 2. Configure DigitalOcean Spaces in the setup page
55+ On the first visit, the page shows ** Create your config account** . In Coolify, open the
56+ ** ` github-config ` service Terminal** and retrieve its one-time registration code:
5857
59- Open the setup URL and log in as ** admin** with your setup password. Enter:
58+ ``` bash
59+ python -m github_backup.config_auth registration-code
60+ ```
61+
62+ Enter that code, choose your username and a unique ** 16-128 character password/passphrase** ,
63+ confirm it, and save the credentials in your password manager. Then use the login form.
64+ The code prevents someone else from claiming an unregistered deployment. Registration closes
65+ permanently after the first account is created; later visits show login, with a logout button
66+ inside setup. ** There is no password-reset or second-registration feature.** Forgotten
67+ credentials require a fresh deployment with a new persistent volume; existing S3 backups
68+ are preserved. Missing/corrupt authentication files block access instead of reopening registration.
69+ See [ authentication and recovery] ( docs/GITHUB_APP.md#config-account-and-recovery ) .
70+
71+ ### 2. Configure DigitalOcean Spaces in the config page
72+
73+ After registering and logging in with your chosen username, enter:
6074
6175| Setup field | Where to get it |
6276| ---| ---|
@@ -102,6 +116,22 @@ Optional scheduling, capacity, retention and monitoring settings retain the defa
102116[ .env.example] ( .env.example ) . Existing manual environment deployments remain supported;
103117saved browser Spaces settings take precedence over their legacy Spaces variables.
104118
119+ ### Edit configuration and review activity
120+
121+ The ** Config** page follows three steps: ** 1. Storage → 2. GitHub connections → 3. Repository scope** .
122+ Configured sections collapse; click their heading to reopen and edit. Saved secrets are never
123+ shown or prefilled. Editing saved storage requires your current password. Use ** Monitoring** for optional Kuma settings. The interface uses a neutral
124+ black-and-white design, automatic light/dark mode and a theme selector, with mobile touch targets.
125+
126+ Open ** Account** to change your username or password. Confirm your current password; changing
127+ either signs out all browsers without affecting backups or reopening registration.
128+
129+ Open ** Activity** to view/search the last ** 250 completed repository checks** , including status,
130+ completion time and duration, in pages of 25. Times adapt to the browser's time zone; UTC remains
131+ available in the timestamp title. Unchanged successful checks are included. History starts when
132+ this feature is deployed; older remote manifests are not imported. This local bounded log contains
133+ no credentials, raw exception messages or Git URLs and never blocks backups if history storage fails.
134+
105135### 4. Verify the first backup
106136
107137Open the Coolify logs. A successful run emits ` backup_finished ` with ` exit_code: 0 ` .
@@ -139,7 +169,7 @@ it cannot fit a new artifact, it fails visibly rather than delete protected reco
139169
140170## Docker logs and monitoring
141171
142- Application diagnostics are JSON on ** stderr** ; scheduler/run events are JSON on ** stdout** .
172+ Backup diagnostics are JSON on ** stderr** ; scheduler/run events are JSON on ** stdout** .
143173Docker and Coolify collect both streams. No application log files or log-volume mounts are required.
144174Compose rotates Docker logs at ** 10 MB × 3 files** . Locally:
145175
@@ -152,18 +182,17 @@ repositories, or stale checks become unhealthy. Docker's restart policy does not
152182container solely for being unhealthy; configure notifications and inspect the logs.
153183
154184** Optional Uptime Kuma:** create a ** Push** monitor with a ** 180-second heartbeat interval** ,
155- ** 0 retries** and your notification channel. Copy its generated Push URL into:
156-
157- ``` dotenv
158- UPTIME_KUMA_PUSH_URL=https://kuma.example.com/api/push/REPLACE_WITH_PUSH_TOKEN
159- ```
185+ ** 0 retries** and your notification channel. In the config page's ** Uptime Kuma** section,
186+ enter its generated secret Push URL, check ** Enable Push monitoring** , and save. Changes
187+ apply within 30 seconds without a restart. The URL is never displayed again; leave it blank
188+ to keep the saved value. Uncheck monitoring and save to disable it.
160189
161190The worker pushes at most every 60 seconds, plus status changes. It reports failure or
162191overdue successful checks even while the container is running; if the worker disappears,
163192Kuma detects the missing heartbeat. The URL is secret. No Docker socket or inbound worker
164193port is required. See [ the monitoring guide] ( docs/MONITORING.md ) for startup behavior,
165194freshness thresholds, private-network HTTP, notification tests, and all optional variables.
166- Leave the URL empty to disable it completely .
195+ Legacy monitoring environment variables remain a fallback until settings are saved in the page .
167196
168197## Documentation
169198
0 commit comments