feat(seedbox): Docker + Tailscale sidecar architecture #1

Merged
Damien merged 15 commits from feature/seedbox-docker-tailscale into main 2026-01-04 13:29:48 +00:00
Owner

Summary

Complete rewrite of the seedbox infrastructure using Docker containers with Tailscale sidecars for secure access.

Changes

Architecture

  • Each service runs in its own Docker container with a Tailscale sidecar
  • Services are accessible only via Tailscale (HTTPS)
  • BitTorrent peer port (51413) remains publicly exposed for seeding
  • Deployment via Gitea Actions pipeline

New Structure

seedbox/
├── install.sh                    # Server preparation only
├── .env.example                  # Secrets documentation
├── .gitea/workflows/deploy.yml   # Deployment pipeline
├── stacks/
│   ├── transmission/             # BitTorrent client
│   ├── portainer/                # Docker management UI
│   ├── prowlarr/                 # Indexer manager
│   └── sonarr/                   # TV series manager
└── README.md                     # Complete documentation

Services

Service URL Description
Transmission transmission.taila5ad8.ts.net BitTorrent client
Portainer portainer.taila5ad8.ts.net Docker UI
Prowlarr prowlarr.taila5ad8.ts.net Indexer manager
Sonarr sonarr.taila5ad8.ts.net TV series

Gitea Secrets Required

  • TS_AUTHKEY - Tailscale OAuth client secret
  • SEEDBOX_SSH_KEY - SSH deploy key
  • TRANSMISSION_USER - Transmission username
  • TRANSMISSION_PASS - Transmission password

Breaking Changes

⚠️ This replaces the previous single-container Transmission setup with a multi-service architecture.

Deployment Steps

  1. Configure Gitea secrets
  2. Run install.sh on a fresh server
  3. Merge this PR to trigger deployment

Checklist

  • install.sh - Server preparation
  • Gitea Actions pipeline
  • Transmission stack
  • Portainer stack
  • Prowlarr stack
  • Sonarr stack
  • Documentation (README.md)
  • Stack-specific READMEs
## Summary Complete rewrite of the seedbox infrastructure using Docker containers with Tailscale sidecars for secure access. ## Changes ### Architecture - Each service runs in its own Docker container with a Tailscale sidecar - Services are accessible only via Tailscale (HTTPS) - BitTorrent peer port (51413) remains publicly exposed for seeding - Deployment via Gitea Actions pipeline ### New Structure ``` seedbox/ ├── install.sh # Server preparation only ├── .env.example # Secrets documentation ├── .gitea/workflows/deploy.yml # Deployment pipeline ├── stacks/ │ ├── transmission/ # BitTorrent client │ ├── portainer/ # Docker management UI │ ├── prowlarr/ # Indexer manager │ └── sonarr/ # TV series manager └── README.md # Complete documentation ``` ### Services | Service | URL | Description | |---------|-----|-------------| | Transmission | `transmission.taila5ad8.ts.net` | BitTorrent client | | Portainer | `portainer.taila5ad8.ts.net` | Docker UI | | Prowlarr | `prowlarr.taila5ad8.ts.net` | Indexer manager | | Sonarr | `sonarr.taila5ad8.ts.net` | TV series | ### Gitea Secrets Required - `TS_AUTHKEY` - Tailscale OAuth client secret - `SEEDBOX_SSH_KEY` - SSH deploy key - `TRANSMISSION_USER` - Transmission username - `TRANSMISSION_PASS` - Transmission password ## Breaking Changes ⚠️ This replaces the previous single-container Transmission setup with a multi-service architecture. ## Deployment Steps 1. Configure Gitea secrets 2. Run `install.sh` on a fresh server 3. Merge this PR to trigger deployment ## Checklist - [x] install.sh - Server preparation - [x] Gitea Actions pipeline - [x] Transmission stack - [x] Portainer stack - [x] Prowlarr stack - [x] Sonarr stack - [x] Documentation (README.md) - [x] Stack-specific READMEs
Damien added 15 commits 2026-01-04 12:30:42 +00:00
- Remove Transmission deployment (now via Gitea Actions)
- Add git clone for repo structure
- Simplify to server preparation only
- Keep NFS mount configuration
- Update MOTD for new architecture
- Deploy on push to main and PR validation
- SSH deployment to seedbox via Tailscale
- Inject secrets from Gitea
- Deploy all stacks in stacks/ directory
- WebUI accessible via transmission.taila5ad8.ts.net (HTTPS)
- Peer port 51413 exposed publicly for seeding
- Local downloads + NFS media mount
- Accessible via portainer.taila5ad8.ts.net (HTTPS only)
- Docker socket mounted for container management
- Indexer manager for *arr apps
- Accessible via prowlarr.taila5ad8.ts.net (HTTPS only)
- TV series management
- Accessible via sonarr.taila5ad8.ts.net (HTTPS only)
- Mounts downloads and media volumes
- Document Docker + Tailscale sidecar architecture
- Add Gitea secrets configuration guide
- Add service management (add/remove/update)
- Add troubleshooting section
- Add Tailscale ACL configuration
Damien merged commit 49d16f886e into main 2026-01-04 13:29:48 +00:00
Damien deleted branch feature/seedbox-docker-tailscale 2026-01-04 13:29:54 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Damien/infra-scripts#1