]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - support/doc/dependencies.md
74a8b117e90509d964c6723c2bcc25dc5e8cd8f6
[github/Chocobozzz/PeerTube.git] / support / doc / dependencies.md
1 # Dependencies
2
3 ## Debian / Ubuntu and derivatives
4 1. On a fresh Debian/Ubuntu, as root user, install basic utility programs needed for the installation
5
6 ```
7 # apt-get install curl sudo unzip vim
8 ```
9
10 2. It would be wise to disable root access and to continue this tutorial with a user with sudoers group access
11
12 3. Install certbot (choose instructions for nginx and your distribution) :
13 [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions)
14 4. Install NodeJS 8.x (current LTS):
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)
16 5. Install yarn, and be sure to have a recent version (>= 1.5.1, the latest release):
17 [https://yarnpkg.com/en/docs/install#linux-tab](https://yarnpkg.com/en/docs/install#linux-tab)
18 6. Run:
19
20 ```
21 $ sudo apt update
22 $ sudo apt install nginx ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git
23 $ ffmpeg -version # Should be >= 3.x
24 $ g++ -v # Should be >= 5.x
25 ```
26
27 If you still have a 2.x version of FFmpeg on Ubuntu:
28 ```
29 $ sudo add-apt-repository ppa:jonathonf/ffmpeg-3
30 $ sudo apt-get update
31 $ sudo apt install ffmpeg
32 ```
33
34 Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
35 ```
36 $ sudo systemctl start redis postgresql
37 ```
38
39 ## Arch Linux
40
41 1. Run:
42
43 ```
44 $ sudo pacman -S nodejs yarn ffmpeg postgresql openssl redis git wget unzip python2 base-devel npm nginx
45 ```
46
47 Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
48 ```
49 $ sudo systemctl start redis postgresql
50 ```
51
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:
59 * Install - [https://linoxide.com/linux-how-to/install-ffmpeg-centos-7/](https://linoxide.com/linux-how-to/install-ffmpeg-centos-7/)
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
65 $ sudo yum install epel-release centos-release-scl
66 $ sudo yum update
67 $ sudo yum install nginx postgresql postgresql-server postgresql-contrib openssl gcc-c++ make redis git devtoolset-7
68 ```
69
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.
71 ```
72 $ sudo scl enable devtoolset-7 bash
73 ```
74
75 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:
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
81 Now 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
87 ## Fedora
88
89 0. Upgrade your packages:
90 ```
91 dnf upgrade
92 ```
93 1. Add a user with sudoers group access:
94 ```
95 useradd my-peertube-user
96 passwd my-peertube-user
97 usermod my-peertube-user -a -G wheel # Add my-peertube-user to sudoers
98 su my-peertube-user
99 ```
100 2. (Optional) Install certbot (choose instructions for nginx and your distribution) :
101 [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions)
102 3. 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)
104 4. Install yarn:
105 [https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install)
106 5. Enable [RPM Fusion](https://rpmfusion.org) for Fedora (available for x86, x86_64, armhfp)
107 ```
108 sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
109 ```
110 This is necessary because `ffmpeg` is not in the Fedora repos.
111
112 6. Run:
113 ```
114 sudo dnf install nginx ffmpeg postgresql-server postgresql-contrib openssl gcc-c++ make redis git
115 ffmpeg -version # Should be >= 3.x
116 g++ -v # Should be >= 5.x
117 ```
118 7. 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
124 sudo postgresql-setup initdb
125 sudo systemctl enable postgresql.service
126 sudo systemctl start postgresql.service
127 # Nginx
128 sudo systemctl enable nginx.service
129 sudo systemctl start nginx.service
130 # Redis
131 sudo systemctl enable redis.service
132 sudo systemctl start redis.service
133 ```
134 8. Firewall
135
136 By default, you cannot acces your server via public IP. To do so, you must configure firewall:
137 ```
138 # Ports used by peertube dev setup
139 sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
140 sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
141 # Optional
142 sudo firewall-cmd --permanent --zone=public --add-service=http
143 sudo firewall-cmd --permanent --zone=public --add-service=https
144 # Reload firewall
145 sudo firewall-cmd --reload
146 ```
147 9. Configure max ports
148
149 This is necessary if you are running dev setup, otherwise you will have errors with `nodemon`
150 ```
151 echo 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
155 ## FreeBSD
156
157 On a fresh install of [FreeBSD](https://www.freebsd.org), new system or new jail:
158
159 1. bootstrap pkg, initialize db and install peertube's dependencies, always as root (sudo not yet installed):
160 ```
161 # pkg
162 # pkg update
163 # pkg install -y sudo bash wget git python nginx pkgconf vips postgresql96-server postgresql96-contrib redis openssl node npm yarn ffmpeg unzip
164 ```
165
166 2. Allow users in the wheel group (hope you don't forgot to add your user on wheel group!) to use sudo
167 ```
168 # visudo
169 ```
170
171 Uncomment the line 90
172 ```
173 %wheel ALL=(ALL) ALL
174 ```
175
176 3. Enable nginx, redis, postgresql services and initialize database
177
178 ```
179 # sysrc postgresql_enable="YES"
180 # sysrc redis_enable="YES"
181 # sysrc nginx_enable="YES"
182 ```
183
184 Initialize database and start services
185 ```
186 # service postgresql initdb
187 # service postgresql start
188 # service redis start
189 # service nginx start
190 ```
191
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 ```
204
205 ## Gentoo
206
207 * Add this to ``/etc/portage/sets/peertube``:
208 ```
209 net-libs/nodejs
210 sys-apps/yarn
211 media-video/ffmpeg[x264] # Optionnally add vorbis,vpx
212 dev-db/postgresql
213 dev-db/redis
214 dev-vcs/git
215 app-arch/unzip
216 dev-lang/python:2.7
217 www-servers/nginx
218 media-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 ```
227 emerge -a @peertube
228 ```
229
230 * Initialize the PostgreSQL database if you just merged it:
231 ```
232 emerge --config postgresql
233 ```
234
235 * (For OpenRC) Enable and then start the services (replace with the correct PostgreSQL slot):
236 ```
237 rc-update add redis
238 rc-update add postgresql-10
239 rc-service redis start
240 rc-service postgresql-10 start
241 ```
242
243 ## Other distributions
244
245 Feel free to update this file in a pull request!