Skip to content

docs: add Docker install instructions - #163

Draft
sanity wants to merge 1 commit into
mainfrom
docs/docker-install
Draft

docs: add Docker install instructions#163
sanity wants to merge 1 commit into
mainfrom
docs/docker-install

Conversation

@sanity

@sanity sanity commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem

freenet-core#5516 is merged and publishes an official container image to ghcr.io/freenet/freenet-core for every release, for linux/amd64 and linux/arm64. Nothing on the site mentions it.

What this adds

A new page at /quickstart/docker/ covering the docker run one-liner, a compose file, ports, how to check on a running node, and the two things that are easy to get wrong.

It keeps itself updated. Worth stating plainly, because the usual container habit is to pull a new image when you remember. A Freenet peer that falls far enough behind is refused by the network rather than merely missing features, so the image applies updates itself the way the desktop install does. No Watchtower, no cron job.

It wants --network host. Under Docker's default bridge network the dashboard is unreachable: the local API binds loopback, which under bridge is the container's loopback, and publishing the port does not help because nothing is listening on an address it forwards to. UDP hole punching also degrades, because bridge networking rewrites the source port. The bridge fallback is documented along with what it costs, for people on Docker Desktop who have no choice.

Placement

Docker is offered inside the Linux tab of the install picker rather than as a fourth tab.

The tabs select an operating system and Docker is not one. Host networking, which is the mode where the dashboard actually works, is Linux in practice anyway. And someone who just wants Freenet on their own laptop should still see exactly one instruction, not a fork in the road.

It renders as a quiet footnote under the install command, not a competing option:

Running a server, a NAS or a Raspberry Pi? There's an official container image that keeps itself updated: run Freenet in Docker.

Happy to move it if you'd rather it were more prominent, or add it to the nav.

Also

Rewrote the "Containers & headless servers" troubleshooting note. It described the installer failing inside an existing container, which now reads as discouraging when there is a supported image. It points at the image first and keeps the --system advice for people running the installer in a container themselves.

Testing

hugo builds clean, /quickstart/docker/ renders, and the links resolve from both the Linux tab and the troubleshooting note.

Do not merge yet

The image does not exist until a release publishes it. freenet-core#5516 only just merged, and docker-publish.yml fires on release: published, so ghcr.io/freenet/freenet-core has no tags right now. Merging this before then would ship instructions that fail with what looks like a missing image.

There is also a one-time step after that first publish: GitHub creates the package private by default, so its visibility has to be set to public once before anyone outside the org can pull it.

So the order is: release goes out, image publishes, package set public, then this merges. I am tracking the first three and will comment here when they are done.

[AI-assisted - Claude]

https://claude.ai/code/session_01W2mLM7JF3KC6UfTB4Zqwf6

freenet-core#5516 publishes an official container image to
ghcr.io/freenet/freenet-core for every release, built for linux/amd64 and
linux/arm64. Nothing on the site mentioned it.

Adds /quickstart/docker/ covering the one-liner, compose, ports, checking on a
running node, and the two things that are easy to get wrong:

- The image keeps itself updated. That is worth stating plainly, because the
  usual container habit is to pull a new image, and a Freenet peer that falls
  far enough behind is refused by the network rather than merely missing
  features. No Watchtower, no cron, no remembering to pull.
- It wants `--network host`. Under Docker's default bridge network the
  dashboard is unreachable (the API binds loopback, which is the container's
  loopback, and publishing the port does not help because nothing is listening
  on an address it forwards to) and UDP hole punching degrades. The bridge
  fallback is documented along with what it costs.

Placement: Docker is offered inside the Linux tab of the install picker rather
than as a fourth tab. The tabs select an operating system and Docker is not
one, and host networking, which is the mode where the dashboard works, is Linux
in practice anyway. Someone who wants the app on their own machine still sees
one instruction.

Also rewrites the "Containers & headless servers" troubleshooting note. It
described the installer failing inside an existing container, which reads as
discouraging now that there is an image; it now points at the image first and
keeps the `--system` advice for people running the installer in a container
themselves.

Claude-Session: https://claude.ai/code/session_01W2mLM7JF3KC6UfTB4Zqwf6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant