Git Glimpse is a simple self-hosted application for sharing private GitHub repositories with friends via public links.
- Docker
- Docker Compose
- Cron (optional, required for automated cleanup in production)
An environment file is required for the application to run.
- Copy the example file:
cp .env.example .env
- Fill in required values described in
.env.exampleIn development mode, emails are printed to stdout — no SMTP server is required.
Development uses Docker with:
-
bind-mounted source code
-
bind-mounted ./data directory
-
live reload for the web app and workers
To run dev:
-
Build image:
docker build -t git-glimpse . -
Start the app (dev mode):
docker compose up
-
Cleanup worker (manual):
docker compose --profile manual run --rm cleanup_worker
-
Reset root password:
./scripts/run_root_passwd.sh --password '<password>'After initialising database the only way to change root account password.
Production uses the same image with different volume mappings and stricter filesystem settings.
Data is stored on a dedicated host path /mnt/git-glimpse-data via docker-compose.prod.yml
To run production:
-
Build image:
docker build -t git-glimpse . -
Setup storage (one time, requires sudo privliges)
./scripts/setup_storage.sh
-
Setup cron jobs:
./scripts/setup_cron.sh
Runs cleanup worker once per day
-
Start the app:
docker compose -f docker-compose.yml -f docker-compose.prod.yml up
-
Reset root password:
PROD=1 ./scripts/run_root_passwd.sh --password '<password>'After initialising database the only way to change root account password.
To completely remove the production setup, use the provided helper scripts:
remove_corn.shRemoves the scheduled cron job responsible for running the cleanup worker.
remove_storage.shDeletes the external production data directory (
/mnt/git-glimpse-data).
This will permanently remove:- the SQLite database
- all stored repositories and artifacts
- any related runtime data
Requires
sudoprivileges and is destructive.
Make sure you have backups before running this script.
Recomended order:
- Stop the running containers:
docker compose down
- Remove the cron job:
./scripts/remove_cron.sh
- Remove the storage:
sudo ./scripts/remove_storage.sh
After these steps, the production environment will be fully removed.