Operational privacy summary for depotra.in. Descriptions below reflect live configuration, not generic policy boilerplate.
single VPS. forgejo v15 LTS. everything below is scoped to depotra.in only, zero shared paths with navi.land mail.
127.0.0.1:3000, not public, nginx front door onlydepotra.in, reverse proxy, TLS via Let's Encrypt/var/lib/forgejo/data/forgejo.db, no MariaDB, no shared mail DB/var/lib/forgejo/invite-gate/invites.db/run/php/depotra-fpm.sock, not the navi.land php8.2-fpm socket2222 on depotra.in[database] DB_TYPE = sqlite3 PATH = /var/lib/forgejo/data/forgejo.db [server] HTTP_ADDR = 127.0.0.1 HTTP_PORT = 3000 DOMAIN = depotra.in
DNS for depotra.in is Cloudflare proxied (orange cloud). that means:
X-Forwarded-For from random clients[security] REVERSE_PROXY_TRUSTED_PROXIES = 127.0.0.0/8,::1/128
nginx adds HSTS, nosniff, SAMEORIGIN frame guard, strict referrer, and disables camera, microphone, geolocation, and payment APIs:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always; add_header Content-Security-Policy "font-src 'self' data:" always;
isolation from navi.land: separate nginx site, separate webroot (/var/www/depotra.in), separate PHP pool, separate systemd units. the mail stack (postfix, dovecot, mariadb, snappymail) is never touched by forgejo deploy scripts.
Log volume is intentionally minimized. Current forgejo log configuration:
[log] MODE = console LEVEL = Error LOGGER_ACCESS_MODE = LOGGER_ROUTER_MODE = LOGGER_XORM_MODE = LOGGER_SSH_MODE = LOGGER_ACCESS_LEVEL = None LOGGER_ROUTER_LEVEL = None LOGGER_XORM_LEVEL = None LOGGER_SSH_LEVEL = None
nginx for this vhost:
access_log off;
Per-request access logs are not written for depotra.in traffic.
Additional disabled features:
[metrics] ENABLED = false, no prometheus scrape endpointENABLE_PPROF = false, no go pprof endpoint exposedENABLE_SWAGGER = false, swagger UI hidden (API still works with tokens)SHOW_FOOTER_VERSION = false, SHOW_FOOTER_TEMPLATE_LOAD_TIME = false, SHOW_FOOTER_POWERED_BY = falseexception: the health watchdog writes operational state to /var/log/forgejo-watchdog.log and /var/lib/forgejo/watchdog.state, service up/down, permission fixes, HTTP probe results. that's infra housekeeping, not user activity tracking. auto-update logs to /var/log/forgejo-auto-update.log on weekly schedule.
we do not load Google Fonts (fonts.googleapis.com, fonts.gstatic.com) or any other external font CDN. the UI uses your device's system font stack (system-ui, Segoe UI, etc.) via CSS only, no outbound font requests.
/assets/css/ on this hostamoled.css overrides theme font variables to system fontsfont-src 'self' data:, blocks third-party font loads in the browser[mailer] ENABLED = false, forgejo won't mail you)ENABLE_USER_HEATMAP = false)SHOW_REGISTRATION_BUTTON = false)[service.explore] REQUIRE_SIGNIN_VIEW = true)ENABLE_OPENID_SIGNIN = false)On signup and on every password change, Forgejo checks the password against the Have I Been Pwned (HIBP) Pwned Passwords database using k-anonymity (range query to api.pwnedpasswords.com). We do not use XposedOrNot or any other breach-check service for passwords.
[security] PASSWORD_HASH_ALGO = argon2 MIN_PASSWORD_LENGTH = 12 PASSWORD_CHECK_PWN = true
api.pwnedpasswords.com, receives a list of matching hash suffixes, and compares the remainder on this hostAPI reference: HIBP Pwned Passwords API (k-anonymity).
[session] COOKIE_SECURE = true SAME_SITE = strict [security] DISABLE_QUERY_AUTH_TOKEN = true
?token= rejected), header onlyno open signups. nginx auth_request gates /user/sign_up, you need a valid invite cookie or you get bounced to /invite/.
used_at, random redeem_token issued, HMAC-signed cookie setdepot_invite: httponly, secure, samesite=lax, 15 minute TTL/etc/forgejo/invite-gate.env (ADMIN_PASS_HASH), verified via password_verify(), not plaintextopen_basedir locked to invite-gate dir, can't wander the filesystemCREATE TABLE invites ( code TEXT UNIQUE NOT NULL, -- one-time used_at TEXT, -- set on redeem redeem_token TEXT, -- cookie binding revoked_at TEXT, expires_at TEXT );
[repository] DEFAULT_PRIVATE = private FORCE_PRIVATE = true DEFAULT_PUSH_CREATE_PRIVATE = true [service] DEFAULT_KEEP_EMAIL_PRIVATE = true DEFAULT_USER_VISIBILITY = private SHOW_USER_EMAIL = false
repos are private by default and you can't make public ones. profiles default private, emails hidden.
what actually persists on disk:
/var/lib/forgejo/data/lfsARTIFACT_RETENTION_DAYS = 90LOG_RETENTION_DAYS = 180backups: backup_forgejo.sh archives /var/lib/forgejo, /etc/forgejo, bootstrap secrets. Mail stack backups are separate and outside this scope.
forgejo-watchdog.timer, every 5 minutes. checks forgejo/runner/nginx/fpm/invite-db, auto-restarts failed services. never touches navi.land.forgejo-auto-update.timer, Sunday 04:00 weekly, v15.x LTS only, rollback on failure.Questions or reports of config mismatches: [email protected]