3 <!-- START doctoc generated TOC please keep comment here to allow auto update -->
4 <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
7 - [Debian / Ubuntu and derivatives](#debian--ubuntu-and-derivatives)
8 - [Arch Linux](#arch-linux)
9 - [CentOS 7](#centos-7)
14 - [Other distributions](#other-distributions)
16 <!-- END doctoc generated TOC please keep comment here to allow auto update -->
18 ## Debian / Ubuntu and derivatives
19 1. On a fresh Debian/Ubuntu, as root user, install basic utility programs needed for the installation
22 # apt-get install curl sudo unzip vim
25 2. It would be wise to disable root access and to continue this tutorial with a user with sudoers group access
27 3. Install certbot (choose instructions for nginx and your distribution) :
28 [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions)
29 4. Install NodeJS 10.x:
30 [https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions)
31 5. Install yarn, and be sure to have [a recent version](https://github.com/yarnpkg/yarn/releases/latest):
32 [https://yarnpkg.com/en/docs/install#linux-tab](https://yarnpkg.com/en/docs/install#linux-tab)
37 $ sudo apt install nginx ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git python-dev
38 $ ffmpeg -version # Should be >= 3.x
39 $ g++ -v # Should be >= 5.x
42 If you still have a 2.x version of FFmpeg on Ubuntu:
44 $ sudo add-apt-repository ppa:jonathonf/ffmpeg-3
46 $ sudo apt install ffmpeg
49 Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
51 $ sudo systemctl start redis postgresql
59 $ sudo pacman -S nodejs-lts-dubnium yarn ffmpeg postgresql openssl redis git wget unzip python2 base-devel npm nginx
62 Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
64 $ sudo systemctl start redis postgresql
69 1. Install NodeJS 10.x:
70 [https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora)
72 [https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install)
73 3. Install or compile ffmpeg:
74 * Install - [https://linoxide.com/linux-how-to/install-ffmpeg-centos-7/](https://linoxide.com/linux-how-to/install-ffmpeg-centos-7/)
75 * Compile - [https://gist.github.com/mustafaturan/7053900#file-latest-ffmpeg-centos6-sh](https://gist.github.com/mustafaturan/7053900#file-latest-ffmpeg-centos6-sh)
80 $ sudo yum install epel-release centos-release-scl
82 $ sudo yum install nginx postgresql postgresql-server postgresql-contrib openssl gcc-c++ make wget redis git devtoolset-7
85 5. You need to use a more up to date version of G++ in order to run the yarn install command, hence the installation of devtoolset-7.
87 $ sudo scl enable devtoolset-7 bash
90 Later when you invoke any node command, please prefix them with `CC=/opt/rh/devtoolset-7/root/usr/bin/gcc CXX=/opt/rh/devtoolset-7/root/usr/bin/g++`, such as with:
93 $ sudo -H -u peertube CC=/opt/rh/devtoolset-7/root/usr/bin/gcc CXX=/opt/rh/devtoolset-7/root/usr/bin/g++ yarn install --production --pure-lockfile
96 Initialize the PostgreSQL database:
98 $ sudo postgresql-setup initdb
101 Now that dependencies are installed, before running PeerTube you should enable and start PostgreSQL and Redis:
103 $ sudo systemctl enable redis
104 $ sudo systemctl enable postgresql
105 $ sudo systemctl start redis
106 $ sudo systemctl start postgresql
111 0. Upgrade your packages:
115 1. Add a user with sudoers group access:
117 useradd my-peertube-user
118 passwd my-peertube-user
119 usermod my-peertube-user -a -G wheel # Add my-peertube-user to sudoers
122 2. (Optional) Install certbot (choose instructions for nginx and your distribution) :
123 [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions)
124 3. Install NodeJS 10.x:
125 [https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora)
127 [https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install)
128 5. Enable [RPM Fusion](https://rpmfusion.org) for Fedora (available for x86, x86_64, armhfp)
130 sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
132 This is necessary because `ffmpeg` is not in the Fedora repos.
136 sudo dnf install nginx ffmpeg postgresql-server postgresql-contrib openssl gcc-c++ make redis git
137 ffmpeg -version # Should be >= 3.x
138 g++ -v # Should be >= 5.x
142 _from [PostgreSQL documentation](https://www.postgresql.org/download/linux/redhat/):_
143 > Due to policies for Red Hat family distributions, the PostgreSQL installation will not be enabled for automatic start or have the database initialized automatically.
146 sudo postgresql-setup initdb
147 sudo systemctl enable postgresql.service
148 sudo systemctl start postgresql.service
150 sudo systemctl enable nginx.service
151 sudo systemctl start nginx.service
153 sudo systemctl enable redis.service
154 sudo systemctl start redis.service
158 By default, you cannot access your server via public IP. To do so, you must configure firewall:
160 # Ports used by peertube dev setup
161 sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
162 sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
164 sudo firewall-cmd --permanent --zone=public --add-service=http
165 sudo firewall-cmd --permanent --zone=public --add-service=https
167 sudo firewall-cmd --reload
169 9. Configure max ports
171 This is necessary if you are running dev setup, otherwise you will have errors with `nodemon`
173 echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
175 [More info](https://stackoverflow.com/questions/34662574/node-js-getting-error-nodemon-internal-watch-failed-watch-enospc#34664097)
179 On a fresh install of [FreeBSD](https://www.freebsd.org), new system or new jail:
181 1. bootstrap pkg, initialize db and install peertube's dependencies, always as root (sudo not yet installed):
185 # pkg install -y sudo bash wget git python nginx pkgconf vips postgresql96-server postgresql96-contrib redis openssl node npm yarn ffmpeg unzip
188 2. Allow users in the wheel group (hope you don't forgot to add your user on wheel group!) to use sudo
193 Uncomment the line 90
198 3. Enable nginx, redis, postgresql services and initialize database
201 # sysrc postgresql_enable="YES"
202 # sysrc redis_enable="YES"
203 # sysrc nginx_enable="YES"
206 Initialize database and start services
208 # service postgresql initdb
209 # service postgresql start
210 # service redis start
211 # service nginx start
218 brew install ffmpeg nginx postgresql openssl gcc make redis git yarn
223 brew services run postgresql
224 brew services run redis
229 * Add this to ``/etc/portage/sets/peertube``:
233 media-video/ffmpeg[x264] # Optionnally add vorbis,vpx
241 # Optionnal, client for Let’s Encrypt:
243 # app-crypt/certbot-nginx
246 * If you are on a "stable" Gentoo you need to accept the testing keyword ~amd64 yarn:
248 mkdir -p /etc/portage/package.keywords
249 cat << EOF >> /etc/portage/package.keywords/peertube
250 # required by yarn (argument) for PeerTube
255 * Compile the peertube set:
260 * Initialize the PostgreSQL database if you just merged it:
262 emerge --config postgresql
265 * (For OpenRC) Enable and then start the services (replace with the correct PostgreSQL slot):
268 rc-update add postgresql-11
269 rc-service redis start
270 rc-service postgresql-11 start
273 ## Other distributions
275 Feel free to update this file in a pull request!