{"id":19388385,"url":"https://github.com/mk-fg/tails-offline-docs-bundle-builder-dockerfile","last_synced_at":"2026-05-18T07:06:14.577Z","repository":{"id":144996605,"uuid":"554726511","full_name":"mk-fg/tails-offline-docs-bundle-builder-dockerfile","owner":"mk-fg","description":"Dockerfile to build offline copy of documentation website for Tails privacy-focused portable operating system","archived":false,"fork":false,"pushed_at":"2022-10-20T11:05:25.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-24T19:58:14.421Z","etag":null,"topics":["build-scripts","distro","docker","documentation","linux","liveusb","privacy","tails"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mk-fg.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-20T09:36:52.000Z","updated_at":"2022-11-20T07:52:11.000Z","dependencies_parsed_at":"2023-05-06T12:31:25.370Z","dependency_job_id":null,"html_url":"https://github.com/mk-fg/tails-offline-docs-bundle-builder-dockerfile","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mk-fg/tails-offline-docs-bundle-builder-dockerfile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mk-fg%2Ftails-offline-docs-bundle-builder-dockerfile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mk-fg%2Ftails-offline-docs-bundle-builder-dockerfile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mk-fg%2Ftails-offline-docs-bundle-builder-dockerfile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mk-fg%2Ftails-offline-docs-bundle-builder-dockerfile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mk-fg","download_url":"https://codeload.github.com/mk-fg/tails-offline-docs-bundle-builder-dockerfile/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mk-fg%2Ftails-offline-docs-bundle-builder-dockerfile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33168910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build-scripts","distro","docker","documentation","linux","liveusb","privacy","tails"],"created_at":"2024-11-10T10:12:34.581Z","updated_at":"2026-05-18T07:06:14.542Z","avatar_url":"https://github.com/mk-fg.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"Tails offline-docs-bundle builder Dockerfile\n============================================\n\nA simple Dockerfile_ to build offline copy of documentation website for\nTails_ privacy-focused portable operating system.\n\n.. _Tails: https://tails.boum.org/\n.. _Dockerfile: https://docs.docker.com/engine/reference/builder/\n\n\n.. contents::\n  :backlinks: none\n\nRepository URLs:\n\n- https://github.com/mk-fg/tails-offline-docs-bundle-builder-dockerfile\n- https://codeberg.org/mk-fg/tails-offline-docs-bundle-builder-dockerfile\n- https://fraggod.net/code/git/tails-offline-docs-bundle-builder-dockerfile\n\n\nLonger Description\n------------------\n\nTails is a portable desktop linux distribution, packed with nice tools for\nprivate and relatively censorship-resistant internet access, that is easy to\ndrop onto a USB stick and use with any arbitrary PC or laptop that one might\ncome across.\n\nBeing a specialized OS like that, it incorporates many design decisions - starting\nfrom being portable to avoid possibility of storing persistent logs/data - which\nmight not be obvious and need some documentation to understand and use correctly.\n\nWhich is why it has good documentation on its website (see e.g. its\n`Design Documents`_), and also available in the running Tails distribution\n(under Documentation option in the main menu), which can be useful in\noffline form as well, as a directory of html files (accessible via any\nbrowser/device), and that's what script in this repository puts together.\n\nUsing Dockerfile allows for an easy one-command self-contained and\nhighly-reproducible build process, without needing to install anything except\nfor docker tools on the host (running any OS supported by docker), where this\ndocumentation bundle will be produced.\n\nAlternative can be to `follow official guidelines for how to do it on debian`_,\nor copy documentation directory from e.g. Tails running in a local VM.\n\nSome parts of the docs link to other online resources, but these are\nusually not specific to Tails and its quirks, so are out of scope here.\nIf some limited subset of them is also needed for offline use, can recommend\n`SingleFile browser extension`_ that easily saves those with all embedded\ncontent into a single self-contained HTML file with one click.\n\n.. _Design Documents: https://tails.boum.org/contribute/design/\n.. _follow official guidelines for how to do it on debian: https://tails.boum.org/contribute/build/website/\n.. _SingleFile browser extension: https://github.com/gildas-lormeau/SingleFile\n\n\nHow to use this\n---------------\n\nDockerfile_ is kinda like a makefile - a script for docker builder tool to\nrun commands in order to create an output (a docker image or other artifact).\n\n`Dockerfile in this repository`_ is intended to be used with first-party\n`docker buildx`_ tool/plugin to produce \"tails-website\" directory,\nby running the following command (in the same dir as Dockerfile)::\n\n  docker buildx build --output type=local,dest=. .\n\nCommand does not need sudo/root permissions, only access to a running docker daemon socket.\n\nIt should go through all steps, finishing with \"exporting to client / copying files\",\ncreating \"tails-website\" directory under the current dir (according to ``dest=.`` option).\n\nIf running the command prints error with a long help message, make sure\ndocker-buildx plugin is installed (e.g. ``pacman -S docker-buildx``),\nwhile any errors mentioning docker socket or permissions on it usually indicate\nthat either docker daemon is not running on the system (has to be started with\n``systemctl start docker`` or such), or \"docker buildx\" command has no permission\nto access its socket (often solved by proper group or something - see docker or\ndistro-specific docs for it).\n\nCopy resulting \"tails-website\" dir somewhere portable (or whatever reader device),\nopen \"index.html\" file in it using any browser or an html reader app, and access\nall documentation pages via links from there.\n\nDockerfile for the buld command above also supports some customization\nvia --build-arg option(s), for example ``--build-arg DEBIAN_TAG=bullseye-slim``\nto use specific debian release for the build (see `dockerhub page for debian\nimage`_ for a list of these, default is \"stable-slim\" moving target),\nor ``--build-arg BUILD_LANGS=yes`` to build all non-english language translations\n(disabled by default for faster build and smaller resulting dir).\nSee Dockerfile itself for a full list of such supported customizations at the top.\n\n.. _Dockerfile in this repository: Dockerfile\n.. _docker buildx: https://github.com/docker/buildx\n.. _dockerhub page for debian image: https://hub.docker.com/_/debian\n\n\nMisc links, tips and tricks\n---------------------------\n\n\n- Tails can be run in a Virtual Machine from ISO file within some existing OS,\n  producing an almost-certainly more private environment than general-purpose\n  host OS with same things installed there, for a variety of good reasons.\n\n\n- Modern USB sticks can have a lot of space, much more than 1-2G that Tails needs,\n  and it is silly to only write/carry a single distribution image/iso on those.\n\n  Easy way to cram as many of these there as one wants, with a space to spare\n  for any normal files too, is to put a `Ventoy tool`_ on the USB drive itself,\n  and drop distribution images/ISOs in there, which will all become bootable options.\n\n\n- If Ventoy isn't your cup of tea for any reason (need custom partitioning/fs\n  setup for example), modern GRUB bootloader also supports booting ISO files\n  just fine, but has to be manually configured with regards to kernel/initrd\n  paths in there, and their boot parameters.\n\n  That way one can format/partition the USB drive in any way, run ``grub-install``\n  on it as with any boot drive, with entries like these in grub.cfg file to have\n  it boot specified iso file, with the usual debian live-boot/initramfs parameters\n  (as of tails-amd64-5.5.iso)::\n\n    # --- Tails\n    # Auth: user:live\n    # Useful args: toram debug=1 ip=[device]:[client_ip]:[netmask]:[gateway_ip]:[nameserver]\n    # https://tails.boum.org/blueprint/usb_install_and_upgrade/archive/\n    # https://manpages.debian.org/testing/live-boot-doc/live-boot.7.en.html\n    set iso_tails=/images/tails.iso\n\n    menuentry \"tails.iso\" {\n      loopback loop $iso_tails\n      linux (loop)/live/vmlinuz boot=live config live-media=removable \\\n        nopersistence noprompt timezone=Etc/UTC splash noautologin module=Tails \\\n        slab_nomerge slub_debug=FZ mce=0 vsyscall=none init_on_free=1 mds=full,nosmt \\\n        page_alloc.shuffle=1 findiso=$iso_tails  quiet\n      initrd (loop)/live/initrd.img\n    }\n\n    menuentry \"tails.iso [troubleshooting]\" {\n      loopback loop $iso_tails\n      linux (loop)/live/vmlinuz boot=live config live-media=removable \\\n        nopersistence noprompt timezone=Etc/UTC splash noautologin module=Tails \\\n        slab_nomerge slub_debug=FZ mce=0 vsyscall=none init_on_free=1 mds=full,nosmt \\\n        page_alloc.shuffle=1 findiso=$iso_tails \\\n        noapic noapm nodma nomce nolapic nomodeset nosmp vga=normal\n      initrd (loop)/live/initrd.img\n    }\n\n  More up-to-date cmdline opts can be copied from ``isolinux/live64.cfg``\n  on the tails iso file itself, which it normally uses to start through\n  isolinux bootloader there.\n\n\n- Any MicroSD card can be easily formatted with MBR and normal first partition\n  for windows/smartphone data, followed by e.g. ext4 with ISOs and GRUB2 in there,\n  and used as a bootable media with any USB card-reader.\n\n\n.. _Ventoy tool: https://www.ventoy.net/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmk-fg%2Ftails-offline-docs-bundle-builder-dockerfile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmk-fg%2Ftails-offline-docs-bundle-builder-dockerfile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmk-fg%2Ftails-offline-docs-bundle-builder-dockerfile/lists"}