Skip to content

Latest commit

 

History

History
88 lines (78 loc) · 4.21 KB

File metadata and controls

88 lines (78 loc) · 4.21 KB

Phase 2 — Migrate to Raspberry Pi + 1TB SSD

The stack was built to be lift-and-shift portable: every path is container-internal (/data, /config) and every cross-service address is a container name (qbittorrent:8080, http://flaresolverr:8191). So your entire configuration — Prowlarr indexers, qBittorrent, Kapowarr's ComicVine key + root folder, Suwayomi extensions, Kavita libraries + read progress — moves with the config/ directory. Near-zero re-wiring.

0. Prep the Pi

  • Raspberry Pi 5 (8GB) + the 1TB SSD over USB 3 (SSD strongly preferred over flash).
  • Flash Raspberry Pi OS Lite (64-bit / arm64), enable SSH.
  • Mount the SSD by UUID in /etc/fstab at e.g. /mnt/ssd.
  • Install Docker + Compose:
    curl -fsSL https://get.docker.com | sh
    sudo usermod -aG docker "$USER"   # re-login after this

1. Copy the project (lift-and-shift)

On the Mac, with the stack stopped (make down) so databases are quiesced:

# Project + config/ (the brains). NOT data/ — re-download media on the Pi,
# or rsync it separately/overnight if you want to carry it over.
rsync -avz --exclude data/ ./ pi@<pi-ip>:/srv/mangablitz/

Stopping first matters: copying SQLite files (Prowlarr/Kapowarr/Suwayomi) while running can capture a half-written WAL. make down → rsync → done.

2. Adjust .env on the Pi

cd /srv/mangablitz
nano .env
  • PUID / PGID → the Pi user's id -u / id -g (usually 1000 / 1000).
  • KAVITA_PORT=5000 (no macOS AirPlay to dodge on the Pi).
  • Point the data root at the SSD — either symlink ln -s /mnt/ssd/data ./data or edit the compose volume base. Keep the internal /data layout identical.

3. Start

make up          # images are all arm64 multi-arch — they just pull
make ps
make urls

Everything should come up already-wired. Spot-check Prowlarr (indexers present), Kapowarr (ComicVine key + root folder), Suwayomi (extensions installed), Kavita (libraries + your read progress). If anything's missing, make bootstrap-prowlarr re-adds the qBittorrent download client.

4. Remote access from iPhone/iPad — Tailscale + HTTPS

Recommended: host-install Tailscale on the Pi (simpler/faster than the container):

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
# Serve Kavita over automatic-HTTPS on your tailnet:
sudo tailscale serve --bg 5000     # proxies https://<pi>.<tailnet>.ts.net -> Kavita

Install Tailscale on your iPhone + iPad, sign into the same tailnet, and Kavita is reachable anywhere at https://<pi-name>.<tailnet>.ts.net — encrypted, no router ports opened. (To expose it beyond your devices, tailscale funnel; otherwise keep it tailnet-only, which is the safer default.)

Prefer containers? make remote-up runs the bundled tailscale service instead (set TS_AUTHKEY in .env); it uses config/tailscale-serve/serve.json to publish Kavita on 443. Host-install is still the cleaner choice on a Pi.

5. Excellent iOS reading UX

Kavita serves OPDS + read-progress sync, so your place follows you across devices. Best native apps (point each at your Tailscale HTTPS URL):

  • Panels — gorgeous comic/manga reader (OPDS) → your Comics & Manga libraries.
  • Aidoku or Paperback — native, Tachiyomi-style manga with progress sync; connect to Suwayomi (:4567) or Kavita.
  • Kavita web (PWA) — "Add to Home Screen" for a universal fallback on both devices.
  • EPUBs: Kavita's reader, or send to Apple Books / KOReader.

Enable Kavita OPDS under Settings → your user → OPDS to get the feed URL.

6. Operate

  • VPN for torrents: make vpn-up (fill VPN_* in .env); then change the download-client host in Prowlarr/Kapowarr from qbittorrent to gluetun.
  • SSD space: in qBittorrent set a share-ratio limit + "remove torrent on completion" so seeding torrents don't fill the 1TB (imported media is a hardlink and survives torrent removal).
  • Updates: make maintenance-up runs Diun → notifies when images update (notify-only; you choose when to make down && make up to apply).
  • Backups: make backup (or cron scripts/backup-config.sh /mnt/ssd/backups) — tarballs config/ (the irreplaceable brains), not media.