Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e726db5
Update docker image tags to latest release
bramj May 8, 2026
5ab4c4b
Change Django server command to "start"
bramj May 8, 2026
f302d2c
Add Forgejo git server to compose.yml
bramj May 8, 2026
80ecc17
Add Forgejo entrypoint.sh
bramj May 8, 2026
91a058d
Add Forgejo to debian install script
bramj May 8, 2026
b98ec39
Add new ENV vars to .env.dist (Forgejo + S3 support)
bramj May 8, 2026
f3a5fae
Add JWT config to .env.dist
bramj May 8, 2026
ec17ade
Generate random pw for Forgejo admin user
bramj May 8, 2026
366c543
Update debian changelog
bramj May 8, 2026
9dc9608
Update readme
bramj May 8, 2026
0341c31
Update status check to include Forgejo
bramj May 8, 2026
93634e9
Small fix: improve smoke tests
bramj May 8, 2026
b51bf5a
fix: Forgejo docs + health check + docker entrypoint
bramj May 11, 2026
fe90fd6
Small fixes
bramj May 12, 2026
28f3e3c
fix: Run sync_git_orgs command after migrations and fixtures
bramj May 12, 2026
2f3f9d0
Pin Forgejo image to avoid breaking updates
bramj May 12, 2026
ece7547
Security: generate random pw for OH root superuser
bramj May 12, 2026
40c24d9
Use a host bind mount for Forgejo data instead of docker volume
bramj May 12, 2026
f80cc93
fixup: readme for superuser
bramj May 12, 2026
425b82b
Add Forgejo to duplicity backup strategy
bramj May 12, 2026
391817d
fix: Improve error message on backup.conf setup
bramj May 12, 2026
eaa0b8b
Add extra command to check backup status
bramj May 12, 2026
499b1a9
Add Forgejo data directory to backup script
bramj May 12, 2026
7380e61
Add REAME.md section on legacy backup restoration
bramj May 12, 2026
f3ce5fa
Improve the backups readme
bramj May 12, 2026
b26f24b
Don't allow restore if services are running
bramj May 12, 2026
f261a76
fix: Forgejo health check api endpoint
bramj May 12, 2026
91128de
Improve restore error message when DB exists
bramj May 13, 2026
56eb93b
Update to 5.6.2 (and small addition to .gitignore)
bramj May 22, 2026
017910c
Fix: CI, extract superuser PW from .env for smoke test
bramj May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 76 additions & 11 deletions .env.dist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
DEBUG_LOGGING=false
DEBUG_TOOLBAR=false

# Allow self-registration (users can sign up without an invitation)
ALLOW_SELF_REGISTRATION=false

# Encryption settings
SECRET_KEY='${SECRET_KEY}'
ENCRYPTION_KEY='${ENCRYPTION_KEY}'
Expand All @@ -28,7 +31,7 @@ DATABASE_PASSWORD=hexa-app
# Initial Django admin user
DJANGO_SUPERUSER_USERNAME=root@openhexa.org
DJANGO_SUPERUSER_EMAIL=root@openhexa.org
DJANGO_SUPERUSER_PASSWORD=root
DJANGO_SUPERUSER_PASSWORD=${DJANGO_SUPERUSER_PASSWORD}

# Networking
############
Expand Down Expand Up @@ -125,9 +128,10 @@ WORKSPACE_BUCKET_PREFIX=hexa-test-

# Storage backend to use for workspace files.
# Options:
# - "fs" (local filesystem)
# - "gcp" (Google Cloud Storage)
# - "fs" (local filesystem)
# - "gcp" (Google Cloud Storage)
# - "azure" (Azure Blob Storage)
# - "s3" (Amazon S3 or S3-compatible, e.g. MinIO)
# Default: fs
STORAGE_BACKEND=fs

Expand All @@ -140,16 +144,19 @@ WORKSPACE_STORAGE_LOCATION=$WORKSPACE_STORAGE_LOCATION
# Generate with: base64 -w 0 service-account-key.json
WORKSPACE_STORAGE_BACKEND_GCS_SERVICE_ACCOUNT_KEY=

# # openssl rand -hex 16
# WORKSPACE_STORAGE_ENGINE_AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
# # openssl rand -base64 42
# WORKSPACE_STORAGE_ENGINE_AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
## AWS: To run it in AWS mode or in LocalHosting mode set the variable to s3
WORKSPACE_STORAGE_BACKEND_AWS_ENDPOINT_URL=
WORKSPACE_STORAGE_BACKEND_AWS_PUBLIC_ENDPOINT_URL=
WORKSPACE_STORAGE_BACKEND_AWS_SECRET_ACCESS_KEY=
## S3 (STORAGE_BACKEND=s3): Amazon S3 or S3-compatible storage (e.g. MinIO)
WORKSPACE_STORAGE_BACKEND_AWS_ACCESS_KEY_ID=
WORKSPACE_STORAGE_BACKEND_AWS_SECRET_ACCESS_KEY=
# Region where buckets will be created (default: eu-central-1)
WORKSPACE_STORAGE_BACKEND_AWS_BUCKET_REGION=
# Internal endpoint for server-side API calls, set for MinIO or custom S3 (e.g. http://minio:9000)
WORKSPACE_STORAGE_BACKEND_AWS_ENDPOINT_URL=
# Public endpoint used in presigned URLs returned to clients: set when internal and public hosts differ
# Falls back to WORKSPACE_STORAGE_BACKEND_AWS_ENDPOINT_URL when not set
WORKSPACE_STORAGE_BACKEND_AWS_PUBLIC_ENDPOINT_URL=
# Optional IAM role ARN to assume when generating short-lived notebook credentials via STS.
# Falls back to static access key/secret when not set (required for MinIO or simple setups).
WORKSPACE_STORAGE_BACKEND_AWS_ROLE_ARN=

WORKSPACE_BUCKET_REGION=

Expand All @@ -163,3 +170,61 @@ WORKSPACE_BUCKET_REGION=

# Bucket to store datasets for all workspaces
WORKSPACE_DATASETS_BUCKET=hexa-datasets
# Maximum number of files snapshotted per dataset version (used for previews)
WORKSPACE_DATASETS_FILE_SNAPSHOT_SIZE=50

# Static Webapps
################

# Optional parent domain to serve static webapps from a subdomain (e.g.
# `app1.webapps.example.com`). Requires wildcard DNS pointing at this host.
# Leave empty to completely disable webapps.
# Example:
# WEBAPPS_DOMAIN=webapps.example.com
WEBAPPS_DOMAIN=

# Comma-separated list of custom domains attached to public webapps. Each
# domain must be set on the Webapp via Django admin AND listed here so Django
# accepts the Host header. Example:
# ADDITIONAL_ALLOWED_HOSTS=carte-sanitaire.gouv.ne,dashboard.example.org
ADDITIONAL_ALLOWED_HOSTS=

# Git server (Forgejo)
######################
# Backs OpenHEXA static webapps. Runs as a sibling container `forgejo`.
# The admin password is auto-generated by setup.sh on first install.

GIT_SERVER_ADMIN_USERNAME=openhexa-admin
GIT_SERVER_ADMIN_PASSWORD=${GIT_SERVER_ADMIN_PASSWORD}

# Absolute path to the directory where Forgejo persists its data
# (SQLite metadata DB, git repositories, attachments, app.ini, ...).
FORGEJO_STORAGE_LOCATION=$FORGEJO_STORAGE_LOCATION

# AI Assistant
##############

# Monthly cap on AI assistant requests per workspace.
ASSISTANT_MONTHLY_LIMIT=200

# Optional Pydantic Logfire integration for AI agent observability.
# When `true`, requires LOGFIRE_TOKEN to be set.
LOGFIRE_SEND_TO_LOGFIRE=false
# LOGFIRE_TOKEN=

# OAuth2
########

OAUTH2_ACCESS_TOKEN_EXPIRE_SECONDS=3600
# Comma-separated list of hosts allowed as OAuth2 redirect URIs.
OAUTH2_ALLOWED_REDIRECT_URI_HOSTS=

# JWT Workspace Tokens (optional)
#################################
# Required only for the `issueWorkspaceToken` GraphQL mutation. Generate a key
# with: openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
# OPENHEXA_JWT_PRIVATE_KEY=
# OPENHEXA_JWT_KID=
# OPENHEXA_JWT_ISSUER=https://app.openhexa.org
# OPENHEXA_JWT_AUDIENCE=openhexa-clients
# OPENHEXA_JWT_TTL=3600
6 changes: 5 additions & 1 deletion .github/workflows/build_debian_package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,11 @@ jobs:
run: docker build -t openhexa/smoke-tests .

- name: Run smoke tests
run: docker run -t --net=host -v "$(pwd)/test-results:/code/test-results" openhexa/smoke-tests http://localhost:3000/ root@openhexa.org root
run: |
SUPERUSER_PASSWORD=$(sudo grep -E '^DJANGO_SUPERUSER_PASSWORD=' /etc/openhexa/env.conf | cut -d= -f2-)
docker run -t --net=host \
-v "$(pwd)/test-results:/code/test-results" \
openhexa/smoke-tests http://localhost:3000/ root@openhexa.org "$SUPERUSER_PASSWORD"

- name: Keep test results
uses: actions/upload-artifact@v7
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ test-results/
.secrets
openhexa.nginx
workspaces/
forgejo_data/
backup.conf*
backup/
workspaces-*
.artifacts/
forgejo_data-*
.artifacts/
Loading
Loading