Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
89 lines (64 loc) · 2.87 KB
/
Copy path.env.example
File metadata and controls
89 lines (64 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Runtime settings for the finki-hub-shell production stack.
# Copy to .env, fill in the required values, and run `docker compose up -d`.
# --- Required -----------------------------------------------------------
# 32+ hex chars shared between the hub and configurable-http-proxy. Generate with:
# openssl rand -hex 32
CONFIGPROXY_AUTH_TOKEN=
# --- Optional (defaults shown) -------------------------------------------
# Loopback port Caddy binds for the SPA; point your outer reverse proxy at this.
# Read by Compose only (the `web` service), never by the hub.
HOST_PORT=8080
# Log level for the hub and its background services.
LOG_LEVEL=INFO
# Timezone used by every service in the stack.
TZ=Europe/Skopje
# Host path to the XFS pool mount created by scripts/pool-init.sh (must carry prjquota).
# The hub container mounts it read-write at /srv/pool and runs as root, because it
# creates, chowns and quotas home directories there itself.
LAB_POOL_DIR=/var/lib/finki-hub-shell/pool
# Percentage of the pool that must stay free before a new environment may be created.
LAB_POOL_RESERVE_PCT=2
# Per-environment XFS project quota, in megabytes (bhard).
LAB_ENV_QUOTA_MB=100
# Per-environment inode ceiling (ihard).
LAB_ENV_MAX_INODES=20000
# User container image pulled by DockerSpawner.
LAB_IMAGE=ghcr.io/finki-hub/shell-lab:latest
# Username/uid/gid inside the lab image; must match its baked-in user.
LAB_USER=ubuntu
LAB_UID=1000
LAB_GID=1000
# Memory ceiling per user container, in megabytes (memswap_limit uses the same value: no swap).
LAB_MEMORY_MB=384
# CPU ceiling per user container (fractional cores; converted to nano_cpus).
LAB_CPUS=0.5
# pids_limit per user container.
LAB_PIDS=256
# tmpfs sizes per user container, in megabytes: /tmp, /var/tmp, /run, /dev/shm.
LAB_TMP_MB=32
LAB_VARTMP_MB=16
LAB_RUN_MB=8
LAB_SHM_MB=16
# Maximum number of simultaneously running user servers (c.JupyterHub.active_server_limit).
LAB_MAX_SESSIONS=20
# Maximum concurrent terminals per user container, enforced in the lab image.
LAB_MAX_TERMINALS=4
# Minutes of inactivity before a running server is culled.
LAB_IDLE_MIN=10
# Hours a user container may run before it is recreated, however busy it is; the
# home directory it mounts is untouched. 0 disables the ceiling.
LAB_CONTAINER_MAX_AGE_H=24
# Hours without activity before an environment's home directory is deleted.
LAB_RETENTION_H=48
# Absolute age ceiling for an environment, in hours; 0 disables the ceiling.
LAB_MAX_AGE_H=0
# Global cap on environment creations per minute, across all users.
LAB_MAX_CREATES_PER_MIN=60
# json-file log caps applied to each user container.
LAB_LOG_MAX_SIZE=512k
LAB_LOG_MAX_FILES=2
# Cloudflare Turnstile site key / secret. Leave both unset to disable the challenge
# entirely; set both to enable it. With both set, a missing, rejected or
# unverifiable response refuses the creation.
TURNSTILE_SITEKEY=
TURNSTILE_SECRET=