privacy

Operational privacy summary for depotra.in. Descriptions below reflect live configuration, not generic policy boilerplate.

stack

single VPS. forgejo v15 LTS. everything below is scoped to depotra.in only, zero shared paths with navi.land mail.

[database]

DB_TYPE = sqlite3

PATH = /var/lib/forgejo/data/forgejo.db



[server]

HTTP_ADDR = 127.0.0.1

HTTP_PORT = 3000

DOMAIN = depotra.in

network & cloudflare

DNS for depotra.in is Cloudflare proxied (orange cloud). that means:

[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.

logging

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:

exception: 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.

fonts & third-party assets

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.

what we don't do

password security

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 reference: HIBP Pwned Passwords API (k-anonymity).

auth & cookies

forgejo sessions

[session]

COOKIE_SECURE = true

SAME_SITE = strict



[security]

DISABLE_QUERY_AUTH_TOKEN = true

invite gate (signup wall)

no open signups. nginx auth_request gates /user/sign_up, you need a valid invite cookie or you get bounced to /invite/.

CREATE 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

);

repo visibility

[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.

data retention

what actually persists on disk:

backups: backup_forgejo.sh archives /var/lib/forgejo, /etc/forgejo, bootstrap secrets. Mail stack backups are separate and outside this scope.

automation timers

what we don't store (on purpose)

contact

Questions or reports of config mismatches: [email protected]

back·legal·sign in