- Ruby 52.8%
- HTML 19.5%
- CSS 16.8%
- Shell 7.7%
- JavaScript 1.6%
- Other 1.6%
|
All checks were successful
Release Deploy / release-deploy (push) Successful in 1m57s
Reviewed-on: #1 |
||
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| bin | ||
| config | ||
| db | ||
| deploy | ||
| scripts | ||
| test | ||
| .containerignore | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .mise.toml | ||
| .ruby-version | ||
| compose.yml | ||
| config.ru | ||
| Containerfile | ||
| Gemfile | ||
| Gemfile.lock | ||
| Rakefile | ||
| README.md | ||
Resume Site
A Rails 8.1 resume site with a small structured CMS. The public site and CMS run from the same container and can be routed by host name.
Development
This project is configured for mise:
mise install
mise run setup
mise run dev
Useful commands:
mise run test
mise exec -- bundle exec rails db:seed
The public site is available at http://localhost:3000/. The CMS fallback is
available at http://localhost:3000/cms.
Production
Copy .env.example to .env, fill in your host names and Garage details, then
launch with Podman:
podman compose up --build
CMS_HOST serves the CMS root and SITE_HOST serves the public resume root.
The /cms path remains available as a local/admin fallback.
The CMS has no login by design. Put CMS_HOST behind a private network,
reverse-proxy auth, or another access control layer.
Forgejo Release Deploys
Pushing a v* tag builds the container image on the docker runner, pushes it
to your registry, and deploys it to 192.168.1.152 with Podman Compose.
Add these Forgejo repository secrets:
REGISTRY_URL
REGISTRY_USERNAME
REGISTRY_PASSWORD
DEPLOY_USER
DEPLOY_SSH_KEY
The deploy path defaults to /srv/resume-site. The target user must be able to
run rootless Podman and write to that directory. The deploy script prepares the
SQLite storage directory for the container's rails user with podman unshare.
Create /srv/resume-site/.env on the deployment server for runtime settings:
SECRET_KEY_BASE=
SITE_HOST=192.168.1.152
CMS_HOST=resume-cms.lan
GARAGE_ENDPOINT=
GARAGE_BUCKET=
GARAGE_ACCESS_KEY_ID=
GARAGE_SECRET_ACCESS_KEY=
GARAGE_REGION=garage
GARAGE_FORCE_PATH_STYLE=true
Do not include export prefixes in this file; it is read by Podman Compose.