jacob.ogden/internal/: camera-footage-fs-1.0.0 metadata and description

Simple index

Public ingress spoke for the office SFTPGo server: relays SFTP and the web client over the WireGuard tunnel

description_content_type text/markdown
requires_dist
  • aeth-ext[async]>=9.0.2
  • devkit-container>=2.1.1
  • pydantic>=2.13.5
  • rich>=15.0.0
requires_python >=3.14
File Tox results History
camera_footage_fs-1.0.0-py3-none-any.whl
Size
8 KB
Type
Python Wheel
Python
3
camera_footage_fs-1.0.0.tar.gz
Size
9 KB
Type
Source

camera-footage-fs

The public ingress for the office SFTPGo server at cffs.sweetfiretobacco.com. A WireGuard spoke (10.8.0.23) of wireguard-hub that relays two ports to the SFTPGo PC (cffs-pc, 10.8.0.22):

The hub forwards only 10.8.0.23 → 10.8.0.22 on TCP 2022 and 8090.

The SFTPGo PC (cffs-pc)

sftpgo/sftpgo.json is the master copy of SFTPGo's config: v2.7.6's defaults with these changes:

Users, groups, folders and admins live in SFTPGo's database, not in this file, and are managed in the admin UI. Its backups hold password hashes, so they never go in this public repo.

Setting up the PC

Install SFTPGo first, then run this from an administrator PowerShell:

irm https://raw.githubusercontent.com/AetherBreaker/camera-footage-fs/main/Install-CffsPc.ps1 | iex

It asks for a camera-footage-fs version (blank means the latest release) and downloads sftpgo.json from that tag. It never reads a local copy. It also asks for the path to cffs-pc.key the first time.

To pass parameters, use & ([scriptblock]::Create((irm <url>))) -Version v0.2.0 -PrivateKeyFile C:\path\cffs-pc.key -PingKey ....

It does the following:

  1. SFTPGo: installs the config (keeping a backup of the old one), removes the SFTPGo installer's firewall rule, adds the port rules, and restarts the service.
  2. WireGuard, through wireguard-spoke-agent:
    • creates the locked folder C:\ProgramData\wireguard-spoke-agent\;
    • installs WireGuard for Windows if it's missing, after checking the installer's WireGuard LLC signature;
    • installs uv and then the agent;
    • copies the key in and deletes the source;
    • writes settings.env;
    • turns off sleep on AC power;
    • runs wireguard-spoke-agent install, which registers its scheduled task and brings the tunnel up.

Run it right after installing SFTPGo, before creating the first admin, and again after every SFTPGo upgrade. It is safe to re-run. Existing settings.env values are kept unless a parameter overrides them.

The SFTPGo installer adds a firewall rule named SFTPGo Service. It allows sftpgo.exe inbound on every port and profile, from any address, which would override the port rules, and every install or upgrade re-creates it. That's why the script needs re-running after upgrades. Until the first admin exists, anyone who can reach 8080 can create it.

Admin (8080) defaults to LocalSubnet, on the Domain and Private profiles only. Windows classes the tunnel interface Public, so the rule never applies to it. If the office LAN is also classed Public, admin access is blocked, not exposed. Pass -AdminRemoteAddress <ip>, such as a Tailscale address, to allow one stable address on every profile instead.

Deploying

Coolify environment: WG_PRIVATE_KEY, WG_HUB_URL=https://tunnels.sweetfiretobacco.com, WG_HUB_REPO=AetherBreaker/wireguard-hub. The DNS record for cffs must be DNS-only, because a proxied record cannot carry TCP 2022. Open TCP 2022 in the VPS firewall.