LibrePortal
Sponsor
Install

PeerTube

Video Platform

PeerTube is your own video site. Upload your videos, organise them into channels, and share them with anyone, while people on Mastodon and the rest of the fediverse can follow your channels and see each new video.

On this page
  1. At a glance
  2. What it's good for
  3. Before you install: decide on its address
  4. Signing in
  5. Uploading your first video
  6. Letting other people in
  7. Works with
  8. Good to know
  9. What the install asks
  10. Addresses and ports
  11. Settings
  12. In its config file
  13. Tools
  14. Works with
  15. Privacy and security
  16. What leaves this server
  17. What LibrePortal turns off
  18. Sources
  19. Under the hood

Good to know before you install

Its address is permanent, so give it a domain first if it should federate; transcoding is heavy (about 0.3 GB idle, up to 0.7 GB and 2 CPU cores while it processes a video, one at a time by default); by default it contacts no third party for viewing, and viewers share video with each other over P2P.

At a glance#

What it is
Video Platform Media
Where it opens
Web Interface On its own port at http://your-server:port, or video.your-domain once you have a domain
Updates
When you choose New versions wait for you to press Update
Backups
Included Part of the daily backup when that's switched on
Copies
One per server
Needs
memory

What it's good for#

If you make videos (a woodworking channel, recordings of your choir, talks from a local group) and don't want them on YouTube, PeerTube gives them a home you control. You upload a video, PeerTube prepares it to play smoothly on phones and computers, and you share the link. There are no adverts, no recommendations pushing something else, and nobody can take your videos down but you.

Videos live in channels. People on other PeerTube servers, Mastodon or Friendica can follow a channel and see each new video in their own feed, and comment on it from there.

PeerTube, Jellyfin, Owncast or Invidious?

They do different jobs. Jellyfin is a private library for films and TV you already own, for your household. Owncast is for live streaming with chat. Invidious is a private way to watch YouTube. PeerTube is for publishing your own videos, so other people can watch and follow them.

Before you install: decide on its address#

This is the one decision you can't change later, so it's worth a minute.

PeerTube builds every link, every video address and every channel around the address it was installed with. Other servers know your channels by that address, so it's your PeerTube's identity on the fediverse.

  • If you have a domain set up in LibrePortal, with Traefik running, and PeerTube's access is Public, it takes https://video.<your domain>. This is the only kind of address that can federate.
  • If you don't, PeerTube uses your server's own address and port on your network, like http://192.168.1.50:9123. That's fine for sharing videos around the house or over the LibrePortal VPN, but other servers can never follow it.

Want the fediverse? Add the domain first.

If there's any chance people on other servers should follow your channels, set up your domain and Traefik before you install PeerTube. Afterwards is too late.

To check: LibrePortal works PeerTube's address out again whenever it rewrites the app's setup, rather than writing it down for good as it does for Funkwhale; check what an existing PeerTube does when a domain or Traefik is added later, or the server's network address changes

Leave Open Sign-ups off while you install. The install checks that sign-ups are closed, and stops PeerTube if they aren't. You can open them afterwards.

Signing in#

PeerTube has one built-in admin account, called root. LibrePortal gives it a generated password before PeerTube first starts, so PeerTube never makes up a password of its own or writes one to its log. Sign-ups are closed in a new PeerTube, so nobody else can make an account, and there's no setup page for a first visitor to claim.

Sign in with the username root, or with the admin email. The install asks for the Admin email; leave it empty and one is made up: admin@video.<your domain> with a domain, or admin@peertube.invalid without one, an address that can never receive mail. The password is in the Login Details shown when the install finishes. Press Welcome on the app's page to see it again.

The first start takes a while: PeerTube sets up its database before it answers, and LibrePortal waits up to ten minutes for it, then checks that root's login works.

Uploading your first video#

Sign in, press Publish and choose a file. Your account already has a channel to put it in, and you can make more channels for different subjects. Give the video a title and choose who can see it: public, unlisted (anyone with the link) or private.

After the upload, PeerTube transcodes the video: it makes copies at smaller sizes in a streaming format that plays well everywhere. This is the heaviest thing PeerTube does. On a small server a long video can take a while, and it only does one at a time. LibrePortal's settings keep it modest:

  • HLS Streaming is on, and the older Web Videos format is off, because keeping both doubles the space each video takes.
  • Make 480p and Make 720p are on, and Make 1080p is off. The original is always kept as well.
  • Transcode Jobs At Once is 1.

Change them on the Config tab and press Update Configuration. PeerTube's own admin pages show these settings, but LibrePortal's values win.

Letting other people in#

There are two ways, both in PeerTube itself. As the admin, you can create accounts for people from PeerTube's administration pages. Or turn on Open Sign-ups on the Config tab and let people register themselves. A new account is always an ordinary user, never an admin, so opening sign-ups doesn't put root at risk. Without a mail server, new people aren't asked to confirm their email address.

The Tools tab has two tools. Reset User Password takes a username and sets a new password (leave it empty to generate one). Use it for root too: it updates the Login Details at the same time. List Users shows every account, its display name and whether it's an admin, a moderator or a user.

Works with#

PeerTube works with the other fediverse apps in the catalogue, like Mastodon and Friendica. People follow your channels from there. PeerTube itself follows whole servers rather than people: from its administration pages, you can follow another PeerTube so its videos show up on yours.

If you run both on this server, PeerTube's Works with list shows whether they can reach each other, with a Check button that tests everything another server would need, and Follow links for your channels that open the follow page in the other app. LibrePortal never follows anything for you; you press Follow yourself.

Following needs a domain on both sides. Without one, Friendica can still follow a channel's feed on your own network.

Good to know#

  • Updates wait for you. Every PeerTube release changes its database the first time it starts, and some change how videos are stored or how it talks to other servers. So LibrePortal starts PeerTube on Manual and pins it to an exact version: pressing Update brings fresh builds of that version, and nothing jumps to a new release on its own. When a newer release appears on the Updates tab, Upgrade moves PeerTube up one version at a time, taking a backup and checking it at every step, so you do it when you've read the release notes. If you'd rather it climbed on its own, set it to Automatic and it steps up one verified version a day. A backup is taken first, as always. See Updates.
  • Memory and CPU. About 0.3 GB when it's idle, database included, and up to 0.7 GB and two CPU cores while it transcodes a video. Transcode Threads (in Advanced mode) sets how many cores one job may use.
  • Videos take space, and so do backups. Each video is kept as the original plus a copy at every size you make. LibrePortal backs up the database and all of PeerTube's files, videos included, so check your backup location has room. After the first backup, only new videos add much.
  • Viewers share with each other. When several people watch the same video at once, their browsers pass pieces of it between themselves, which takes load off your server. It also means viewers can see each other's network addresses. PeerTube lets each viewer switch this off in their own settings.
  • It contacts no one else by default. The plugin catalogue, the new-version check and importing videos from YouTube and other sites are all off. Plugin Index, Version Check and Video Import switch them on.
  • Email isn't sent until you fill in the Mail Server settings. Password-reset emails and notifications need them; the Reset User Password tool doesn't.
  • Live streaming is off. Live Streaming is in Advanced mode, but live streams arrive on a port of their own (1935), which LibrePortal doesn't open for PeerTube. To check: document live streaming once LibrePortal opens port 1935 for PeerTube; today turning Live Streaming on opens no port
  • Its own port stays on plain http. Everything PeerTube writes points at the address it was installed with, so its own port isn't switched to HTTPS. The domain address is HTTPS either way.
  • Public, with no extra login in front. Other servers and video players have to reach it, and an extra login would lock them out. If it's only for your own network, you can make it private, and it simply won't federate.
  • One per server. PeerTube can't run as several copies side by side.

What the install asks#

When you install PeerTube, LibrePortal asks for a little more than usual before it starts:

  • Admin email. The admin (root) can also sign in with this, and it receives the contact form. Its password is made for you and shown with the app's logins. Empty makes up an address. You can leave this one empty.

Addresses and ports#

PeerTube has one port. LibrePortal picks a free port number for each when you install, so yours will differ from anyone else's. The Config tab's Network section shows them, and the app's Open button uses the right one. "Anyone" means it's reachable from wherever your server is reachable; you can make it private later.

What it isWho can reach itWith a domain
Web Interface Anyone video.your-domain

Settings#

In its config file#

PeerTube's own settings aren't on the Config tab yet. They live in the app's config file, described here so you know they exist. How to change them.

SettingWhat it doesStarts as
Name
CFG_PEERTUBE_DISPLAY_NAME
What this app is called on your dashboards. Leave empty to use its usual name Empty
Show on the LibrePortal Dashboard
CFG_PEERTUBE_SHOW_ON_DASHBOARD
Whether this app gets a shortcut on the front page of the LibrePortal WebUI, separate from any Dashy dashboard
Choices: true, false
true
GeoIP Database
CFG_PEERTUBE_GEOIP
Whether PeerTube may download a GeoIP database from framasoft.org to count views by country
Choices: true, false
false
Detailed logs
CFG_PEERTUBE_VERBOSE_LOGS
Whether PeerTube writes its normal, chattier logs, including who connected, instead of only warnings and errors.
Choices: true, false
false
Debug logging for 24 hours
CFG_PEERTUBE_DEBUG_LOGS
Turn on to see everything PeerTube is doing while you look for a problem; it turns itself off after 24 hours.
Choices: true, false
false
Open Sign-ups
CFG_PEERTUBE_SIGNUP_ENABLED
Let anyone create an account
Choices: true, false
false
Transcoding
CFG_PEERTUBE_TRANSCODING_ENABLED
Re-encode uploads so they play everywhere
Choices: true, false
true
HLS Streaming
CFG_PEERTUBE_TRANSCODING_HLS
The modern streaming format
Choices: true, false
true
Web Videos
CFG_PEERTUBE_TRANSCODING_WEB_VIDEOS
Also keep the older plain-MP4 format (doubles storage)
Choices: true, false
false
Make 480p
CFG_PEERTUBE_TRANSCODING_480P
Transcode a 480p version
Choices: true, false
true
Make 720p
CFG_PEERTUBE_TRANSCODING_720P
Transcode a 720p version
Choices: true, false
true
Make 1080p
CFG_PEERTUBE_TRANSCODING_1080P
Transcode a 1080p version (more CPU and disk)
Choices: true, false
false
Transcode Jobs At Once
CFG_PEERTUBE_TRANSCODING_CONCURRENCY
How many videos transcode in parallel 1
Transcode Threads Advanced
CFG_PEERTUBE_TRANSCODING_THREADS
CPU threads per transcoding job 2
Live Streaming Advanced
CFG_PEERTUBE_LIVE_ENABLED
Allow RTMP live streams (needs port 1935)
Choices: true, false
false
Plugin Index
CFG_PEERTUBE_PLUGINS_INDEX
Browse plugins from packages.joinpeertube.org
Choices: true, false
false
Version Check
CFG_PEERTUBE_VERSION_CHECK
Ask joinpeertube.org about new versions
Choices: true, false
false
Video Import
CFG_PEERTUBE_IMPORT_HTTP
Let users import videos from YouTube etc.
Choices: true, false
false
Outgoing Mail Server
CFG_PEERTUBE_SMTP_HOST
Your own mail server (SMTP) for PeerTube's email. Filled in, it wins over the mail server on this machine; empty uses that one when it is on Empty
Outgoing Mail Port
CFG_PEERTUBE_SMTP_PORT
587 for STARTTLS, 465 for TLS from the start 587
Outgoing Mail TLS From Start
CFG_PEERTUBE_SMTP_TLS
true for port 465
Choices: true, false
false
Outgoing Mail Username
CFG_PEERTUBE_SMTP_USER
The account PeerTube logs in to the mail server with Empty
Outgoing Mail Sender
CFG_PEERTUBE_SMTP_FROM
The address PeerTube's mail comes from Empty
Admin Username
CFG_PEERTUBE_ADMIN_USER
The name the admin signs in with (fixed by PeerTube) root
Admin Email
CFG_PEERTUBE_ADMIN_EMAIL
The email the admin can also sign in with. Empty makes one up Empty

Tools#

PeerTube's Tools tab has 2 buttons for jobs you'd otherwise need a terminal for. Each one runs as a task, so you can watch it on the Tasks page and read what it did. More about Tools.

Reset User Password

Set a new password for an existing account. Leave blank to generate one.

Asks for: Account username, New password (optional)
List Users

List every account.

Works with#

These are the other apps PeerTube knows how to work with. Once it's installed, its page shows the same list with whether each one is connected. How this works.

  • Email: Sends sign-up and password emails and notifications through your mail server, from an account of its own, unless a mail server is set in its own settings. Needs the mail server to have a real certificate. LibrePortal sets this up by itself when both are installed.
  • Fediverse: Its channels and videos can be followed from there, and from anywhere on the fediverse. There's nothing to switch on; LibrePortal shows whether it can work and lets you check. It needs a domain.
  • Grafana: Shows dashboards for the apps that have one. works with every app
  • Prometheus: Collects metrics from the apps that can export them. works with every app
  • Uptime Kuma: Watches your apps and shows when one goes down. works with every app

Privacy and security#

Worth knowing PeerTube is your own video site. LibrePortal switches off its version check, plugin store, video import and location-database download; it still federates and shares video pieces between viewers.

What leaves this server#

  • Federation with other servers
  • Viewers' browsers exchange video pieces with each other, so viewers can see each other's addresses

What LibrePortal turns off#

  • Detailed logs and per-request access logging (switchable in Config)
  • Version check
  • Plugin store
  • Location-database download (switchable in Config)

Licence: AGPL-3.0. Audited: 21 October 2026. See the privacy of every app and the Promise.

Sources#

Under the hood#

  • It runs these images: chocobozzz/peertube:v8.3.1@sha256:82767f735ad2009f6e6d2d884b9e85243f36d14f240c3ca96cc5604c1007fadd, postgres:17.11-alpine@sha256:266d3c257594e195b309ae9d1805e54c788f1d7b375f56bf6c367aac6c917e7b, redis:8.10.2-alpine@sha256:9f8d2d789b9a1d1e3f283f979aa9cbf393373806472e1ccd460e2f9c869b833b. The version is pinned, and moves only when you update it.
  • It can sit behind Authelia's sign-in once Authelia is installed.
  • Its own project and documentation: github.com/Chocobozzz/PeerTube

Ports, settings, tools and connections on this page are read from LibrePortal v0.10.97's app catalogue each time the guide is built.

Next steps