Sign inSign up

joly0/pinokio-docker

By joly0

•Updated 4 days ago

Pinokio, the 1-click launcher for open-source AI apps, in a browser-accessible Docker container

Image
0

8.3K

joly0/pinokio-docker repository overview

⁠pinokio-docker

Source and issues: github.com/Joly0/pinokio-docker⁠

Pinokio⁠ in a container, accessible from any web browser.

Pinokio is a 1-click launcher for open-source AI apps: browse, install, run and manage tools like Stable Diffusion WebUIs, ComfyUI, LLM front ends or voice cloning without touching a terminal. This image runs the Pinokio desktop app on a Linux desktop that is streamed to your browser, so you can host it on a server (Unraid, a NAS, a home lab box) and use it from anywhere on your network.

Docker Hub Image version License

⁠Features

  • Pinokio in the browser: the desktop app runs on linuxserver.io's Selkies base image⁠ and is streamed to the browser over HTTP and HTTPS
  • Always up to date: new Pinokio releases are picked up automatically within a few hours, and the image is rebuilt weekly for base image and security updates
  • Persistent data: everything (Pinokio home, installed apps, models, settings) lives in /config
  • Configurable through environment variables: any PINOKIO_* variable is written into Pinokio's own settings on first start
  • Local network sharing: apps started in Pinokio can be reached from other devices through a fixed port
  • Self-healing: Pinokio is restarted automatically if it crashes or is closed

⁠Quick start

⁠docker run
docker run -d \
  --name=pinokio \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 3000:3000 \
  -p 3001:3001 \
  -p 50000:50000 \
  -v /path/to/config:/config \
  --shm-size=1gb \
  --security-opt seccomp=unconfined \
  --restart unless-stopped \
  joly0/pinokio-docker:latest
⁠docker compose
services:
  pinokio:
    image: joly0/pinokio-docker:latest
    container_name: pinokio
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    volumes:
      - /path/to/config:/config
    ports:
      - 3000:3000
      - 3001:3001
      - 50000:50000
    shm_size: "1gb"
    security_opt:
      - seccomp:unconfined
    restart: unless-stopped

Then open https://yourhost:3001/⁠ (or http://yourhost:3000/⁠) in your browser. Pinokio starts maximised in the streamed desktop.

Note: Pinokio installs apps, Python environments and models into /config, so plan for plenty of disk space there (often tens to hundreds of GB).

⁠Parameters

ParameterDescription
-p 3000Web desktop over HTTP
-p 3001Web desktop over HTTPS (self-signed certificate)
-p 50000Pinokio local network sharing port, see PINOKIO_SHARE_LOCAL_PORT
-e PUID=1000User ID the app runs as, see user and group IDs⁠
-e PGID=1000Group ID the app runs as
-e TZ=Europe/LondonTimezone, e.g. Europe/Berlin
-v /configHome directory of the container user: Pinokio's data, installed apps and settings
--shm-size=1gbShared memory for the Electron based Pinokio app; required for it to work reliably
--security-opt seccomp=unconfinedAllows newer system calls that many GUI apps need on older Docker hosts
⁠Pinokio settings

Pinokio keeps its settings in /config/pinokio/ENVIRONMENT. Any environment variable starting with PINOKIO_ that matches a key in that file is written into it once Pinokio has created the file on first start. Each key is only applied once: changes you make later in the Pinokio settings are kept across restarts, and a key is never overwritten again. To reapply a variable, remove its line from /config/pinokio/.pinokio_env_applied.

VariableDefault in this imageDescription
PINOKIO_SHARE_LOCALtrueShare apps started in Pinokio on the local network
PINOKIO_SHARE_LOCAL_PORT50000Fixed port for local network sharing (publish the same port on the container)
PINOKIO_CLIExtra command line arguments passed to the Pinokio binary

All other keys in the ENVIRONMENT file work the same way, see the comments in that file for what each one does.

⁠Desktop options

The Selkies base image⁠ offers further options, for example:

VariableDescription
CUSTOM_USERHTTP basic auth user name, abc by default
PASSWORDHTTP basic auth password; no authentication when unset
CUSTOM_PORT / CUSTOM_HTTPS_PORTChange the internal ports from 3000 / 3001
SUBFOLDERServe under a subfolder when behind a reverse proxy, e.g. /pinokio/
TITLEBrowser tab title, Pinokio by default

See the Selkies configuration docs⁠ for the full list, including GPU acceleration⁠.

Warning: Without PASSWORD there is no authentication, and the desktop includes a terminal with passwordless sudo: anyone who can reach the ports gets root inside the container. Basic auth is only suitable for a trusted local network; for internet access, put the container behind a reverse proxy with proper authentication.

⁠Image tags

Images are published to Docker Hub⁠ and the GitHub Container Registry⁠ as joly0/pinokio-docker and ghcr.io/joly0/pinokio-docker.

TagMeaning
latestNewest build
8, 8.2Newest build of that Pinokio major or minor version
8.2.0Newest build of that exact Pinokio version
8.2.0-J49One specific build; pin this to never change unexpectedly

Only linux/amd64 is built.

⁠Building locally

git clone https://github.com/Joly0/pinokio-docker.git
cd pinokio-docker
docker build -t pinokio-docker .

The build installs the newest Pinokio release. Pass --build-arg PINOKIO_VERSION=<release tag> to build a specific one.

⁠Support

Bugs and feature requests go to the issue tracker⁠. Problems with Pinokio itself (rather than with the container) belong in the Pinokio repository⁠.

⁠License

AGPL-3.0⁠. Pinokio itself is developed by pinokiocomputer⁠ under its own license.

Tag summary

Content type

Image

Digest

sha256:7ff8bb9e9…

Size

1.2 GB

Last updated

4 days ago

docker pull joly0/pinokio-docker