Self-hosting

Hosting PlanarAlly yourself requires a bit more setup then simply using an existing service, but it does give you more control and you can rely on it working offline as well.

To host PlanarAlly yourself you have three options:

If you simply want to run the latest stable release, you are probably best served with the executables or the releases with pre-built clients which do not require much work. In case you do want to have more control over the installation, want to use ‘bleeding-edge’ dev-builds and/or don’t trust some random exe, you should consider performing a manual installation or using docker.

Precompiled executable

You can find the latest version on github. Note that the version numbers that are part of the releases’ file names, are omitted in this tutorial.

To run PlanarAlly on Windows, download the planarally-windows.zip and extract it somewhere in a new folder. This folder contains a lot of different files, but the important one for you right now is the one titled planarally.exe. When you execute this file, a command prompt will appear (a black screen with some text).

Warning

It’s healthy to be wary of random executables on the internet. These .exe files are generated using Nuitka from the python source code in an isolated CI environment.

Nevertheless it can happen that a false-positive is triggered by an antivirus vendor out there for various reasons.

pre-built client

To run PlanarAlly on Linux or Mac, download the planarally-bin archives, while choosing your preferred compression method out of .tar.gz and .zip (content is the same). Extract the content into a new folder, open a terminal navigating into that folder.

Since only the client is pre-built, you need to take care of the python-dependencies yourself. (follow the first section of the manual installation below)

To start the server execute:

python3 server/planarally.py

If everything went well you should now be able to visit http://localhost:8000 and be greeted with the login screen.

Manual installation

If you want to manually install PlanarAlly, you’ll need to make sure you have python 3.6 or newer installed, you can get this from the python site.

To get the source files you can either download a zip for a particular version from github or clone the repository with git.

Everything needed to run PlanarAlly can be found in the server folder.

Make sure to install all dependencies by running:

pip install --user -r requirements.txt

(If you are familiar with python, it is strongly advised to create a dedicated venv for PA, but this is not a hard requirement.)

Production Mode

Before the server can be started, you have to build the client. This is done by the Node.js package manager npm with the following command:

npm i
npm run build

To run the server you now simply run python3 planarally.py and your server should start up.

If everything went well you should now be able to visit http://localhost:8000 and be greeted with the login screen.

For more information on how to configure your server visit the main server management docs.

Debug/Development Mode

In case you want to install and run the server in debug/development mode, you need to run, in the client folder:

npm i
npm run dev

Then, in the server folder, run:

python3 planarally.py dev

This starts the server in a ‘hot module reloading’ mode that builds changes made to the sourcecode on the fly instead of waiting for you to manually rebuild. At the moment, however, it is required to build the client with npm run build once, before you use the serve-mode.

Docker Container

You can grab the Official Container with this command.
docker pull kruptein/planarally

Generally for ease of backup it is recommended to use volumes with docker as well.

docker volume create data
docker volume create assets

Both of those commands will create folders in /var/lib/docker/volumes/ After that, as of the version 0.23 of PlanarAlly you need to change user/group permissions, this can be done with a simple chown command ran on both of your volume folders located in /var/lib/docker/volumes/
sudo chown -R 9000:9000 data/
sudo chown -R 9000:9000 assets/

then you can use this next command to start the container
docker run -d -t -p 8000:8000 -v data:/planarally/data/ -v assets:/planarally/static/assets/ --name planarally kruptein/planarally

then just like it was mentioned in the section above you can just type http://localhost:8000 and access planarally.

See also this write up on setting up a server with SSL encryption written by a community member using an nginx reverse proxy as well as docker-compose.

Docker Container with Docker-Compose and Traefik

Here is an example configuration using docker-compose and traefik, a docker reverse proxy manager. This is assuming that your traefik external network is named web as well.

docker-compose.yml

It is important to note the changes needed to domain.com to match your domain and to the paths to both the assets and data folders. These volumes can be whatever you please.

---
version: "3"

networks:
    traefik_network:
        external:
            name: web

services:
    # Media Server
    planarally:
        image: kruptein/planarally:latest
        restart: unless-stopped
        networks:
            - traefik_network
        volumes:
            - "/path/to/data:/planarally/data/"
            - "/path/to/assets:/planarally/static/assets/"
        labels:
            - "traefik.http.services.pa.loadbalancer.server.scheme=http"
            - "traefik.http.services.pa.loadbalancer.server.port=8000"
            - "traefik.enable=true"
            - "traefik.docker.network=web"
            - "traefik.http.routers.pa-http.service=pa"
            - "traefik.http.routers.pa-http.rule=Host(`pa.domain.com`)"
            - "traefik.http.routers.pa-http.entrypoints=http"
            - "traefik.http.routers.pa.service=pa"
            - "traefik.http.routers.pa.rule=Host(`pa.domain.com`)"
            - "traefik.http.routers.pa.entrypoints=https"
            - "traefik.http.routers.pa.tls=true"
            - "traefik.http.routers.pa.tls.certresolver=dns"
            - "traefik.http.routers.pa.tls.domains[0].main=domain.com"
            - "traefik.http.routers.pa.tls.domains[0].sans=*.domain.com"
            - "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https"
            # these are required, this forces the websocket to forward over https
            - "traefik.http.routers.pa.middlewares=ssl-header"
            - "traefik.http.middlewares.ssl-header.headers.customrequestheaders.X-Forwarded-Proto=https"

Backups

When backing up your data the only items you really need to worry about are /data/planar.sqlite and the /static/assets/ directory both of which will be included in the /planarally directory.

planar.sqlite is the main database file. When the server upgrades to a new database format it will create backups in save_backups/ before proceeding.