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
- At a glance
- What it's good for
- Before you install: decide on its address
- Signing in
- Uploading your first video
- Letting other people in
- Works with
- Good to know
- What the install asks
- Addresses and ports
- Settings
- In its config file
- Tools
- Works with
- Privacy and security
- What leaves this server
- What LibrePortal turns off
- Sources
- 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, orvideo.your-domainonce 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 is | Who can reach it | With 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.
| Setting | What it does | Starts as |
|---|---|---|
NameCFG_PEERTUBE_DISPLAY_NAME |
What this app is called on your dashboards. Leave empty to use its usual name | Empty |
Show on the LibrePortal DashboardCFG_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 DatabaseCFG_PEERTUBE_GEOIP |
Whether PeerTube may download a GeoIP database from framasoft.org to count views by country Choices: true, false |
false |
Detailed logsCFG_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 hoursCFG_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-upsCFG_PEERTUBE_SIGNUP_ENABLED |
Let anyone create an account Choices: true, false |
false |
TranscodingCFG_PEERTUBE_TRANSCODING_ENABLED |
Re-encode uploads so they play everywhere Choices: true, false |
true |
HLS StreamingCFG_PEERTUBE_TRANSCODING_HLS |
The modern streaming format Choices: true, false |
true |
Web VideosCFG_PEERTUBE_TRANSCODING_WEB_VIDEOS |
Also keep the older plain-MP4 format (doubles storage) Choices: true, false |
false |
Make 480pCFG_PEERTUBE_TRANSCODING_480P |
Transcode a 480p version Choices: true, false |
true |
Make 720pCFG_PEERTUBE_TRANSCODING_720P |
Transcode a 720p version Choices: true, false |
true |
Make 1080pCFG_PEERTUBE_TRANSCODING_1080P |
Transcode a 1080p version (more CPU and disk) Choices: true, false |
false |
Transcode Jobs At OnceCFG_PEERTUBE_TRANSCODING_CONCURRENCY |
How many videos transcode in parallel | 1 |
Transcode Threads AdvancedCFG_PEERTUBE_TRANSCODING_THREADS |
CPU threads per transcoding job | 2 |
Live Streaming AdvancedCFG_PEERTUBE_LIVE_ENABLED |
Allow RTMP live streams (needs port 1935) Choices: true, false |
false |
Plugin IndexCFG_PEERTUBE_PLUGINS_INDEX |
Browse plugins from packages.joinpeertube.org Choices: true, false |
false |
Version CheckCFG_PEERTUBE_VERSION_CHECK |
Ask joinpeertube.org about new versions Choices: true, false |
false |
Video ImportCFG_PEERTUBE_IMPORT_HTTP |
Let users import videos from YouTube etc. Choices: true, false |
false |
Outgoing Mail ServerCFG_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 PortCFG_PEERTUBE_SMTP_PORT |
587 for STARTTLS, 465 for TLS from the start | 587 |
Outgoing Mail TLS From StartCFG_PEERTUBE_SMTP_TLS |
true for port 465 Choices: true, false |
false |
Outgoing Mail UsernameCFG_PEERTUBE_SMTP_USER |
The account PeerTube logs in to the mail server with | Empty |
Outgoing Mail SenderCFG_PEERTUBE_SMTP_FROM |
The address PeerTube's mail comes from | Empty |
Admin UsernameCFG_PEERTUBE_ADMIN_USER |
The name the admin signs in with (fixed by PeerTube) | root |
Admin EmailCFG_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.
Set a new password for an existing account. Leave blank to generate one.
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.