move scripts to own dir

This commit is contained in:
2026-03-22 12:06:22 +01:00
parent 58625602c9
commit 56e3131b67
4 changed files with 38 additions and 34 deletions

View File

@@ -19,7 +19,7 @@ cat /etc/os-release
Create these A records pointing to your VPS IP:
| Record | Value |
|--------|-------|
|-------------------------|------------|
| `nextcloud.t-gstone.de` | `<VPS_IP>` |
| `git.t-gstone.de` | `<VPS_IP>` |
@@ -40,13 +40,13 @@ cp monitoring/.env.example monitoring/.env
# - Add Grafana Cloud credentials to monitoring/.env
# 4. Deploy
./deploy.sh
./scripts/deploy.sh
```
## Services
| Service | Subdomain | Stack |
|---------|-----------|-------|
|------------|-------------------------|-------------------------------------|
| Nextcloud | `nextcloud.t-gstone.de` | Nextcloud + PostgreSQL 16 + Redis 7 |
| Gitea | `git.t-gstone.de` | Gitea (SQLite) |
| Caddy | — | Reverse proxy, auto HTTPS |
@@ -99,47 +99,51 @@ done
```
4. Reload Caddy: `docker exec caddy caddy reload --config /etc/caddy/Caddyfile`
5. Add a DNS A record for `myapp.t-gstone.de` -> VPS IP
6. Add data directory creation to `deploy.sh`
7. Add backup steps to `backup.sh` if the service has persistent data
6. Add data directory creation to `scripts/deploy.sh`
7. Add backup steps to `scripts/backup.sh` if the service has persistent data
## Backup & Restore
### Creating Backups
```bash
./backup.sh
./scripts/backup.sh
```
This dumps the Nextcloud Postgres database, archives Nextcloud data/config and Gitea data, and stores them in `/opt/backups/` with date-stamped filenames. Backups older than 7 days are automatically removed.
This dumps the Nextcloud Postgres database, archives Nextcloud data/config and Gitea data, and stores them in
`/opt/backups/` with date-stamped filenames. Backups older than 7 days are automatically removed.
Schedule daily backups:
```bash
crontab -e
# Add:
0 3 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1
0 3 * * * /path/to/scripts/backup.sh >> /var/log/backup.log 2>&1
```
### Restoring
```bash
./restore.sh 2026-03-22
./scripts/restore.sh 2026-03-22
```
This stops services, restores data from the specified date's backup files, restores the database, and restarts everything.
This stops services, restores data from the specified date's backup files, restores the database, and restarts
everything.
### Backup Strategy Options
The current setup stores backups locally on the same VPS. For production use, consider an off-site strategy:
| Option | Pros | Cons |
|--------|------|------|
|---------------------------------------------------------------------------------|--------------------------------------|---------------------------|
| **Local only** (`/opt/backups/`) | Simplest, no extra cost | Lost if VPS dies |
| **rsync to second VPS or home server** | Simple, full control | Need a second machine |
| **S3-compatible object storage** (Backblaze B2, Hetzner Object Storage, Wasabi) | Cheap, durable, off-site | Monthly cost (~$0.005/GB) |
| **Restic or BorgBackup** to any remote target | Encrypted, deduplicated, incremental | More setup complexity |
Recommendation for a personal setup: **Backblaze B2 or Hetzner Object Storage with Restic**. Both offer free egress (B2) or low cost, and Restic handles encryption + deduplication automatically. A cron job running `restic backup` after `backup.sh` completes the pipeline.
Recommendation for a personal setup: **Backblaze B2 or Hetzner Object Storage with Restic**. Both offer free egress (B2)
or low cost, and Restic handles encryption + deduplication automatically. A cron job running `restic backup` after
`backup.sh` completes the pipeline.
## Monitoring
@@ -156,7 +160,7 @@ Recommendation for a personal setup: **Backblaze B2 or Hetzner Object Storage wi
Set these up in Grafana Cloud UI (**Alerting** -> **Alert rules**):
| Alert | Condition | Severity |
|-------|-----------|----------|
|----------------------|-----------------------------------------------------------------------|----------|
| Disk usage high | `node_filesystem_avail_bytes` / `node_filesystem_size_bytes` < 0.2 | Critical |
| Container restarting | Container restart count > 3 in 10 min | Warning |
| High memory usage | `node_memory_MemAvailable_bytes` / `node_memory_MemTotal_bytes` < 0.1 | Warning |