]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - support/doc/dependencies.md
add dependencies for Fedora (#1111)
[github/Chocobozzz/PeerTube.git] / support / doc / dependencies.md
CommitLineData
afe81767 1# Dependencies
63bfad7e 2
e5203ffa 3## Debian / Ubuntu and derivatives
99402413 4 1. On a fresh Debian/Ubuntu, as root user, install basic utility programs needed for the installation
955f14a4 5
bc2fc1a7 6```
99402413 7# apt-get install curl sudo unzip vim
bc2fc1a7 8```
955f14a4 9
93d15753 10 2. It would be wise to disable root access and to continue this tutorial with a user with sudoers group access
63bfad7e 11
93d15753 12 3. Install certbot (choose instructions for nginx and your distribution) :
bc2fc1a7 13 [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions)
93d15753 14 4. Install NodeJS 8.x (current LTS):
63bfad7e 15 [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)
8b1c6944 16 5. Install yarn, and be sure to have a recent version (>= 1.5.1, the latest release):
053ad3a3 17 [https://yarnpkg.com/en/docs/install#linux-tab](https://yarnpkg.com/en/docs/install#linux-tab)
93d15753 18 6. Run:
63bfad7e 19
afe81767 20```
e5203ffa 21$ sudo apt update
469b2908 22$ sudo apt install nginx ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git
955f14a4 23$ ffmpeg -version # Should be >= 3.x
44a9a76e 24$ g++ -v # Should be >= 5.x
63bfad7e
C
25```
26
30274d67 27If you still have a 2.x version of FFmpeg on Ubuntu:
955f14a4
MB
28```
29$ sudo add-apt-repository ppa:jonathonf/ffmpeg-3
30$ sudo apt-get update
31$ sudo apt install ffmpeg
32```
33
81cdf382
RK
34Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
35```
36$ sudo systemctl start redis postgresql
37```
38
afe81767 39## Arch Linux
63bfad7e
C
40
41 1. Run:
42
afe81767 43```
e10c7d51 44$ sudo pacman -S nodejs yarn ffmpeg postgresql openssl redis git wget unzip python2 base-devel npm nginx
63bfad7e
C
45```
46
81cdf382
RK
47Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
48```
49$ sudo systemctl start redis postgresql
50```
51
053ad3a3
EC
52## CentOS 7
53
54 1. Install NodeJS 8.x (current LTS):
55 [https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora)
56 2. Install yarn:
57 [https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install)
58 3. Install or compile ffmpeg:
0414ed10 59 * Install - [https://linoxide.com/linux-how-to/install-ffmpeg-centos-7/](https://linoxide.com/linux-how-to/install-ffmpeg-centos-7/)
053ad3a3
EC
60 * Compile - [https://gist.github.com/mustafaturan/7053900#file-latest-ffmpeg-centos6-sh](https://gist.github.com/mustafaturan/7053900#file-latest-ffmpeg-centos6-sh)
61 4. Run:
62
63```
64$ sudo yum update
0414ed10 65$ sudo yum install epel-release centos-release-scl
053ad3a3 66$ sudo yum update
469b2908 67$ sudo yum install nginx postgresql postgresql-server postgresql-contrib openssl gcc-c++ make redis git devtoolset-7
0414ed10
O
68```
69
d4557fd3 70 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.
4c86a254 71```
80d7cf3a 72$ sudo scl enable devtoolset-7 bash
053ad3a3
EC
73```
74
d4557fd3
RK
75Later 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:
76
77```
78$ 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
79```
80
81cdf382
RK
81Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
82```
83$ sudo service redis start
84$ sudo service postgresql start
85```
86
0a314a99 87## Fedora
88
890. Upgrade your packages:
90```
91dnf upgrade
92```
931. Add a user with sudoers group access:
94```
95useradd my-peertube-user
96passwd my-peertube-user
97usermod my-peertube-user -a -G wheel # Add my-peertube-user to sudoers
98su my-peertube-user
99```
1002. (Optional) Install certbot (choose instructions for nginx and your distribution) :
101[https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions)
1023. Install NodeJS 8.x (current LTS):
103[https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora)
1044. Install yarn:
105[https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install)
1065. Enable [RPM Fusion](https://rpmfusion.org) for Fedora (available for x86, x86_64, armhfp)
107```
108sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
109```
110This is necessary because `ffmpeg` is not in the Fedora repos.
111
1126. Run:
113```
114sudo dnf install nginx ffmpeg postgresql-server postgresql-contrib openssl gcc-c++ make redis git
115ffmpeg -version # Should be >= 3.x
116g++ -v # Should be >= 5.x
117```
1187. Post-installation
119
120_from [PostgreSQL documentation](https://www.postgresql.org/download/linux/redhat/):_
121> Due to policies for Red Hat family distributions, the PostgreSQL installation will not be enabled for automatic start or have the database initialized automatically.
122```
123# PostgreSQL
124sudo postgresql-setup initdb
125sudo systemctl enable postgresql.service
126sudo systemctl start postgresql.service
127# Nginx
128sudo systemctl enable nginx.service
129sudo systemctl start nginx.service
130# Redis
131sudo systemctl enable redis.service
132sudo systemctl start redis.service
133```
1348. Firewall
135
136By default, you cannot acces your server via public IP. To do so, you must configure firewall:
137```
138# Ports used by peertube dev setup
139sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
140sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
141# Optional
142sudo firewall-cmd --permanent --zone=public --add-service=http
143sudo firewall-cmd --permanent --zone=public --add-service=https
144# Reload firewall
145sudo firewall-cmd --reload
146```
1479. Configure max ports
148
149This is necessary if you are running dev setup, otherwise you will have errors with `nodemon`
150```
151echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
152```
153[More info](https://stackoverflow.com/questions/34662574/node-js-getting-error-nodemon-internal-watch-failed-watch-enospc#34664097)
154
4c86a254
GN
155## FreeBSD
156
157On a fresh install of [FreeBSD](https://www.freebsd.org), new system or new jail:
158
dea65ef2 159 1. bootstrap pkg, initialize db and install peertube's dependencies, always as root (sudo not yet installed):
4c86a254
GN
160```
161# pkg
162# pkg update
2987c3d7 163# pkg install -y sudo bash wget git python nginx pkgconf vips postgresql96-server postgresql96-contrib redis openssl node npm yarn ffmpeg unzip
4c86a254
GN
164```
165
dea65ef2 166 2. Allow users in the wheel group (hope you don't forgot to add your user on wheel group!) to use sudo
4c86a254
GN
167```
168# visudo
169```
170
6b48f04e 171 Uncomment the line 90
4c86a254
GN
172```
173%wheel ALL=(ALL) ALL
174```
175
dea65ef2 176 3. Enable nginx, redis, postgresql services and initialize database
4c86a254 177
4c86a254 178```
af5262f1 179# sysrc postgresql_enable="YES"
180# sysrc redis_enable="YES"
181# sysrc nginx_enable="YES"
4c86a254
GN
182```
183
6b48f04e 184 Initialize database and start services
4c86a254
GN
185```
186# service postgresql initdb
187# service postgresql start
188# service redis start
189# service nginx start
190```
191
2f7ac618 192## macOS
193* Add the packages:
194
195 ```
196 brew install ffmpeg nginx postgresql openssl gcc make redis git yarn
197 ```
198* Run the services:
199
200 ```
201 brew services run postgresql
202 brew services run redis
203 ```
396f224b
HM
204
205## Gentoo
206
207* Add this to ``/etc/portage/sets/peertube``:
208```
209net-libs/nodejs
210sys-apps/yarn
211media-video/ffmpeg[x264] # Optionnally add vorbis,vpx
212dev-db/postgresql
213dev-db/redis
214dev-vcs/git
215app-arch/unzip
216dev-lang/python:2.7
217www-servers/nginx
218media-libs/vips[jpeg,png,exif]
219
220# Optionnal, client for Let’s Encrypt:
221# app-crypt/certbot
222# app-crypt/certbot-nginx
223```
224
225* Compile the peertube set:
226```
227emerge -a @peertube
228```
229
230* Initialize the PostgreSQL database if you just merged it:
231```
232emerge --config postgresql
233```
234
235* (For OpenRC) Enable and then start the services (replace with the correct PostgreSQL slot):
236```
237rc-update add redis
238rc-update add postgresql-10
239rc-service redis start
240rc-service postgresql-10 start
241```
2f7ac618 242
afe81767 243## Other distributions
63bfad7e
C
244
245Feel free to update this file in a pull request!