admin / forge

testing description

Clone: git clone http://git.latha.org/admin/forge.git
📁 src
📄 .dockerignore 162 B
📄 .env.example 353 B
📄 .gitignore 205 B
📄 Dockerfile 530 B
📄 flake.lock 1.5 KB
📄 flake.nix 3 KB
📄 fly.toml 411 B
📄 Forge.sln 2.4 KB
📄 justfile 1.2 KB
📄 README.md 1.9 KB

README.md

Forge

Forge is a small self-hosted Git forge built with ASP.NET Core, Blazor, SQLite, and Git Smart HTTP.

Features

  • Browse repositories, trees, blobs, commits, and branches
  • Create repositories from the web UI
  • Push over HTTP to auto-create a missing repository on first push
  • Cookie-based web login with Basic auth support for Git operations
  • Repository visibility controls with private/public settings
  • README rendering on the repository page
  • Syntax highlighting for source files and fenced code blocks

Running Locally

nix run .#run-forge

Open http://localhost:5128.

The admin username is admin.

For local runtime, the app now expects a decrypted password file path, which matches the Home Manager agenix pattern. By default the flake looks for:

$XDG_RUNTIME_DIR/agenix/forge-admin-password

Override it with:

export FORGE_ADMIN_PASSWORD_FILE=/path/to/decrypted/password-file

Railway Deployment

This repo includes:

Deploy flow:

export RAILWAY_PROJECT=<project-id>
export RAILWAY_ENVIRONMENT=<environment-id-or-name>
export RAILWAY_SERVICE=<service-name>
nix run .#deploy-railway

The deploy script:

  • reads the admin password from FORGE_ADMIN_PASSWORD_FILE
  • sets Auth__Username, Auth__Password, Database__Path, and Repositories__Root
  • runs railway up --detach

Railway volume note:

  • Attach a Railway volume mounted at /data
  • The deployment expects to store forge.db and bare Git repositories under /data

Push This Repo To Forge

git remote add forge "http://admin:$(cat ${FORGE_ADMIN_PASSWORD_FILE:-${XDG_RUNTIME_DIR}/agenix/forge-admin-password})@localhost:5128/admin/forge.git"
git push -u forge main
An unhandled error has occurred. Reload 🗙