homeserver icon indicating copy to clipboard operation
homeserver copied to clipboard

Backend and frontend for my home server

Home server

Home server backend and frontend. It's a sort of personal Netflix. For more info, read the full introduction.

The backend is built with Django and the frontend with Vue.js. It runs inside Docker.

Setup

  1. Set the required environment variables, as described below.
  2. Run docker-compose up --build -d to start all the components.
  3. If necessary, run scripts/create-user.sh to create your first admin user.

Environment variables

Put these environment variables in a .env file at the root of the project (next to this README file). These environment variables are used by the project.

You can use the .env.example file as a template.

  • BACKEND_SECRET_KEY: A unique, random, secret string used by Django. Explanation.
  • DEFAULT_VIDEO_HEIGHT: The default height for converted videos, in pixels. Defaults to 720.
  • DIGITALOCEAN_TOKEN (optional): DigitalOcean API token. Used for dynamic DNS. Here's how you get that token. If you leave it empty, dynamic DNS will stay disabled.
  • MAX_VIDEO_BITRATE: The maximum video bitrate allowed, in bits per second. Defaults to 2000000.
  • TRANSMISSION_DATA_PATH: Path to Transmission's data folder on your filesystem. Incomplete torrents and Transmission settings are stored there.
  • MOVIE_LIBRARY_PATH: Path to the movie library on your filesystem. Movies, subtitles and covers are stored there.
  • AUTH_COOKIE_DOMAIN (optional): The domain used for authentication cookies. Defaults to the current hostname.
  • BACKEND_DEBUG (optional): Set to 1 to enable Django backend debugging. Error pages will have meaningful error messages. Not safe for production.
  • COMPOSE_PROJECT_NAME (optional): The prefix for this project's docker networks, images, volumes etc. Explanation.
  • SSL_DOMAIN: Domain for which to generate an SSL certificate. If set to localhost, a self-signed certificate will be generated.
  • SSL_EMAIL: Email used for SSL certificate notifications
  • OpenVPN configuration for the Transmission/OpenVPN image:
    • OPENVPN_PROVIDER: See documentation for haugene/transmission-openvpn. Use 'PIA' for Private Internet Access.
    • OPENVPN_USERNAME
    • OPENVPN_PASSWORD