No description
  • Shell 64.6%
  • Dockerfile 35.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ivan Pavlina 9c6380a20e
All checks were successful
build / image (push) Successful in 18s
build / notify (push) Successful in 1s
ci: drop the repull job, the router repulls on its own
The router scheduler repull-tick checks the git.exithub.net images every
minute, so CI no longer needs SSH access to the router.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 11:06:59 +02:00
.forgejo/workflows ci: drop the repull job, the router repulls on its own 2026-10-20 11:06:59 +02:00
.gitignore Alpine SSH shell container for RouterOS, built instead of assembled at runtime 2026-09-01 10:09:38 +02:00
build.sh Build for the RB5009 alone and align the workflow with the newer repos 2026-10-12 21:00:52 +02:00
CLAUDE.md ci: drop the repull job, the router repulls on its own 2026-10-20 11:06:59 +02:00
docker-entrypoint.sh Use SSH_AUTH_KEY_<id> values as-is; the id is arbitrary 2026-10-16 07:51:15 +00:00
Dockerfile Selftest: cover an SSH_AUTH_KEY id that is not a valid shell identifier 2026-10-16 07:52:30 +00:00
README.md ci: drop the repull job, the router repulls on its own 2026-10-20 11:06:59 +02:00
sshd_config Drop SSH_AUTHORIZED_KEYS, keep only one SSH_AUTH_KEY_<comment> variable per key 2026-10-16 07:48:56 +00:00

alpine-mikrotik

An SSH root shell for the home MikroTik router (RB5009, linux/arm64), packaged as a container image: Alpine with openssh, sqlite and vim, configured entirely from the container's environment.

Quick start

Build locally (default is arm64, the image is loaded into the local docker):

bash build.sh                 # linux/arm64
bash build.sh linux/amd64     # native build, fastest

The build runs a self-test that starts the entrypoint with throwaway keys and checks the sshd config, so a green build means the image comes up.

Public keys are passed as one environment variable per key, SSH_AUTH_KEY_<id>. The id is arbitrary, the value is a public key used as-is:

/container/envs/add list=alpine key=SSH_AUTH_KEY_laptop value="ssh-ed25519 AAAA... me@laptop"

Host keys are generated on first start into the mounted /etc/ssh/host_keys, so they survive image updates. If no usable key is found the container exits with an explanation.

Build and deploy

Forgejo Actions builds the arm64 image on every push to main, pushes it to git.exithub.net/ivan.pavlina/alpine-mikrotik (:latest and :<commit sha>), then the router's repull-tick scheduler repulls the container within a minute. Tags v* publish a :<tag> image; pull requests only build.

More

See CLAUDE.md for architecture, the RouterOS container definition, CI details and known pitfalls.