Repository navigation
Releases
pcbgit v0.8.3
Updates no longer run as root, and a handful of everyday fixes.
- Service user:
deploy/install.shsets up a user (pcbgitby default) that owns the checkout,.envand/var/lib/pcbgit-control, and runs every update and check. Root keeps only the setup, the systemd units and Docker itself. The user is in thedockergroup, which amounts to root: this keeps the scripts' own work away from root, it is no wall. Existing servers move over by themselves on the update to this release. Commands by hand are nowsudo -u pcbgit /opt/pcbgit/deploy/update.sh(plainsudostill works and switches user). - Installer: numbered sections, colour, ✓ and ! for what it did and what to look at, and a summary at the end.
- STEP download as
.step.tar.gz(board.stepinside), sent as it is: the server no longer unpacks it for clients without gzip support. Versions rendered before keep their.step.gz, also sent packed, until re-rendered. - Profile pages can be sorted (last updated, name, newest, stars) and page through more than 24 boards. An unknown
sortin a link no longer gives an error page. - Upload progress: uploading a ZIP (new board, new version) shows a progress bar. A ZIP dropped onto the drop zone on
/newis now actually sent. - Passwords: every password field has a show/hide button; new passwords are asked for twice at registration and when changing one.
pcbgit v0.8.2
A friendlier first install, found by reinstalling a server from scratch.
- Interactive installer:
deploy/install.shrun in a terminal asks for the settings and writes.env(an existing one is kept; only what is missing is asked for): the domain, checked and warned about when its DNS does not point at the server; the administrator, with a generated password on request; renderer limits suggested from the server's size; an optional snapshot copy folder. It then offers what to start, with the free disk space: the newest release as the image GitHub built (the default, a download of a minute or two), the same release built on the server, or master built on the server. Without a terminal it behaves as before. - First start from the release image:
update.sh --releaseon a fresh server now installs the release image instead of building, even when the checkout is already past the release. - ARM servers: GitHub builds images for x86-64 only. A release image now counts as ready only if it fits the server's processor; otherwise the release is built on the server, automatic updates included, and Admin → Instance says why.
update.shrun by hand waits for a running update check instead of giving up, and prints each step with the time.
New server: git clone https://github.com/Reutertu3/pcbgit.git /opt/pcbgit, then /opt/pcbgit/deploy/install.sh.
pcbgit v0.8.1
Scheduled snapshots, for servers with no other backup.
- Scheduled snapshots under Admin → Backups: off (the default), daily or weekly at a set hour of server time (UTC in the Docker image). The newest few are kept, 7 by default; manual, uploaded and pre-update snapshots are never deleted by the schedule. Rendered output is left out unless chosen.
- Free disk space: a snapshot that would not fit above the reserved minimum is skipped and tried again an hour later. The page shows the last result and the next run.
- Copy to a second folder: set
PCBGIT_BACKUP_COPY_HOSTin.envto a folder on another disk or a NAS mount, writable by uid 10001. Each scheduled snapshot is also copied there, with the same retention. Nothing else needs changing.
pcbgit v0.8.0
Part numbers from LCSC in the BOM, a STEP download, and tighter rules for pushes and admin accounts.
- BOM part numbers: the LCSC number has its own column, linked to the part on lcsc.com, and is in the CSV download and the interactive view. Part numbers are read from the fields projects actually use:
LCSC Part,LCSC,JLCPCB, andMPN,Part Number,Manufacturer Part Number. Lines are split by LCSC number. - 3D download as STEP: the board with its component models, pads, tracks, vias, zones and silkscreen, for mechanical CAD. It replaces the GLB download; the 3D view is unchanged.
- Push size limit: a push larger than the limit (200 MB by default, set under Admin → Instance → Limits; admins exempt) is refused by git with the reason, and never takes the disk below its reserved free space.
- Two-factor sign-in for admins: the owner can require it (Admin → Instance → Administrators need two-factor sign-in, off by default). Accounts are then only made admin with it on, and admins cannot turn it off.
- Replace authenticator: move two-factor sign-in to a new phone without turning it off.
- Board cards no longer show a broken image while a version is rendering.
After updating: versions rendered before show the LCSC column and the STEP download after a re-render (a board's History, or Admin → Boards → Re-render all). A render takes longer and stores more with the STEP: about 10 s and 8 MB more on a mid-sized board.
The database gains a column for the LCSC number, added automatically at startup.
pcbgit v0.7.4
Ready for a wider audience: protection against sign-up bots and render floods, and a smoother 3D view.
- Registration against bots, without a CAPTCHA: at most 3 new accounts per address an hour, a hidden honeypot field, and at most 50 accounts waiting for approval (registration pauses beyond that). Password hashing no longer blocks the server.
- Render queue per user: each owner's boards may have a limited number of renders waiting or running (10 by default, set under Admin → Instance → Limits and per user under Users; admins exempt). A push with more versions than that renders the newest; the rest can be rendered from the board's history.
- 3D view: panning (right drag) now runs as smoothly as rotating.
The database gains a column for the new per-user limit, added automatically at startup.
pcbgit v0.7.3
Security fix. Updating is strongly recommended.
- Server crash from one request: a single oversized or malformed request to a board's git address could crash pcbgit, without signing in (fetching from a public board is enough). Docker restarted it, but the request could be repeated to keep the site down. Such requests now get an answer instead.
No database changes.
pcbgit v0.7.2
Choose how often pcbgit checks for updates, and forks link to their own code.
- Update check interval: under Admin → Instance, next to "Check now": every hour (default), day, week or month. Automatic updates install at the next check, so they follow the same interval.
- Source link for forks: the footer's "Source" link now follows the server's git remote, so a server running a fork links to that fork, as the AGPL requires.
PCBGIT_SOURCE_URLin.envstill overrides it. - README: shorter, with new sections on how releases and CI work and on forking.
No database changes.
pcbgit v0.7.1
Safer updates, and a release process that checks every image before servers see it.
Updates
- Snapshot before every update: the running version backs up the data (without rendered output) right before switching; the newest three are kept under Admin → Backups.
PCBGIT_UPDATE_SNAPSHOT=falseturns it off. - Health check and rollback: a new version must pass its health check within five minutes, or the previous version comes back by itself and automatic updates skip that release.
- Capped logs: container logs keep at most 5 × 10 MB per service instead of growing until the disk is full.
- Update section: "Check now" responds right away and leaves its result on screen; updates show a progress bar.
Releases
- Each image is started and checked before it is published, and release tags must be
vX.Y.Z. - Base images are pinned; dependency updates arrive as grouped pull requests.
The first update to this version still runs the old way; the safeguards apply from the next one.
No database changes.
pcbgit v0.7.1-rc1
Changes
- Releases from a pushed tag; Dependabot tuned
- TODO: only open work, each item once
- CI catches broken releases before servers see them
- Update section: checks that answer, and a progress bar
- Updates guarded before and after the switch; container logs capped
v0.7.0
pcbgit v0.7.0
Two-factor sign-in
- Optional for every account under Settings → Two-factor sign-in: scan a QR code with any authenticator app and keep the one-time recovery codes.
- The code is asked for once when signing in. The session then lasts the usual 30 days.
git pushkeeps using access tokens. - Turning it on signs out your other devices. Turning it off, or making new recovery codes, needs your password.
Admin accounts
- Only the owner can demote an admin or reset an admin's password or 2FA, so one compromised admin account can no longer take over the others.
- Admins can turn off 2FA for regular users who lost their authenticator.
Locked-out owner
If the owner loses both password and 2FA, run this on the server:
docker compose exec pcbgit node --import ./tests/resolve-hook.mjs scripts/reset-owner.ts </dev/null
It prints a new password, turns 2FA off and ends the owner's sessions.
Smaller changes
- Footer: the site name links to the site itself, and Source goes to the repository.
- Front page banner: vias and pin teardrops on the drawn board.
The database gets its new columns automatically on first start.