Official package repository hosting for Electerm — a terminal/SSH/SFTP/Telnet/Serial/RDP/VNC/Spice client.
Live at https://repos.electerm.org
This project builds and serves two GPG-signed Linux package repositories:
| Repository | Format | Distros | URL |
|---|---|---|---|
| Debian/APT | .deb |
Debian, Ubuntu, etc. | https://repos.electerm.org/deb |
| RPM/YUM | .rpm |
Fedora, RHEL, CentOS, etc. | https://repos.electerm.org/rpm |
Both repositories share the same GPG public key for signing and verification. Package files themselves are not stored — the worker redirects .deb/.rpm download requests to GitHub Releases via a mirror.
- Cloudflare Workers — production hosting (
src/worker.js) - Cloudflare Assets — static file serving (
public/directory) - Pug — HTML templating
- Stylus — CSS preprocessing
- Express — local dev server only
- GitHub Actions — CI/CD, auto-deploys on new Electerm releases
├── .github/workflows/
│ └── deploy-on-release.yml # CI/CD: build + deploy to Cloudflare
├── bin/
│ ├── build # Full build script
│ ├── build-css.js # Compile Stylus → CSS
│ ├── build-html.js # Compile Pug → HTML (all locales)
│ ├── build-deb.js # Build Debian repo metadata
│ ├── build-rpm.js # Build RPM repo metadata
│ ├── fetch-release-info.js # Fetch latest release from GitHub API
│ ├── dev-server.js # Local dev server (Express)
│ └── sitemap.js # Generate sitemap.xml
├── build/
│ ├── build-deb.sh # Debian repo build script (dpkg-deb, apt metadata)
│ └── build-rpm.sh # RPM repo build script (createrepo_c)
├── src/
│ ├── worker.js # Cloudflare Worker entry point
│ ├── css/ # Stylus stylesheets
│ ├── data/ # Locale JSON files (en, zh-cn)
│ ├── static/ # Static assets (public.key, robots.txt, etc.)
│ └── views/ # Pug templates
│ ├── index.pug # Landing page
│ ├── deb.pug # Debian repo setup page
│ ├── rpm.pug # RPM repo setup page
│ └── parts/ # Shared partials (header, footer, etc.)
├── public/ # Build output (served by Cloudflare)
├── wrangler.toml # Cloudflare Workers config
└── package.json
Running npm run build (or ./bin/build) executes:
- Fetch latest release info from GitHub API
- Compile Stylus →
public/index.bundle.css - Copy static assets to
public/ - Compile Pug templates → HTML (for each locale)
- Build Debian repository metadata (
public/deb/) - Build RPM repository metadata (
public/rpm/) - Generate
sitemap.xml
# Install dependencies
npm install
# Start dev server at http://127.0.0.1:6069
npm run devThe dev server (bin/dev-server.js) uses Express to serve pages with hot Pug rendering — no build step needed for HTML changes.
For a full production build:
# Copy sample.env and fill in secrets
cp sample.env .env
# Run full build
npm run build| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN |
Yes | GitHub API token for fetching release info |
GPG_KEY_ID |
No | GPG key ID for signing repo metadata |
GPG_PRIVATE_KEY |
No | Base64-encoded GPG private key |
DEB_FILE_PATH |
No | Local .deb file path (skip download) |
RPM_FILE_PATH |
No | Local .rpm file path (skip download) |
SERVER_DEV_PORT |
No | Dev server port (default: 6069) |
Deployment is automated via GitHub Actions (.github/workflows/deploy-on-release.yml):
- On push to
main— builds and deploys to Cloudflare Workers - On
electerm-releaserepository_dispatch — triggered by new Electerm releases - Manual dispatch — via GitHub Actions UI
GitHub Secrets required:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDGPG_KEY_IDGPG_PRIVATE_KEY
# Add the GPG key
curl -fsSL https://repos.electerm.org/deb/public.key | sudo gpg --dearmor -o /usr/share/keyrings/electerm.gpg
# Add the repository
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/electerm.gpg] https://repos.electerm.org/deb stable main" | sudo tee /etc/apt/sources.list.d/electerm.list
# Update and install
sudo apt update
sudo apt install electerm# Import the GPG key
sudo rpm --import https://repos.electerm.org/rpm/public.key
# Add the repository
sudo tee /etc/yum.repos.d/electerm.repo <<EOF
[electerm]
name=Electerm Repository
baseurl=https://repos.electerm.org/rpm/
enabled=1
gpgcheck=0
repo_gpgcheck=1
gpgkey=https://repos.electerm.org/rpm/public.key
EOF
# Install
sudo dnf install electerm # or: sudo yum install electerm- Fork the repository
- Create a feature branch
- Make your changes
- Test with
npm run dev - Submit a pull request
- Electerm — Terminal/SSH/SFTP/Telnet/Serial/RDP/VNC/Spice client
- Electerm Website — Official website