6.4 KiB
Create Your Own Spee.ch on Ubuntu 16.x 18.x VPS
Overview
Prerequisites
- Ability to use SSH (putty + public key for windows users)
- Ubuntu 16.04 or 18.04 VPS with root access
- Your login info ready
- Exposed ports: 22, 80, 443, 3333, 4444
- Domain name with @ and www pointed at your VPS IP
- alternatively, specify http://localhost:3000 as domain during speech configuration
- Ability to send 5+ LBRY credits to an address
- Noncommercial use
- alternative configuration examples for nginx and certbot are here
You'll be installing:
- MySQL DB version 5.7 or higher
- Default Port 3306
- mysql_native_password plugin
- NodeJS v8+
- Caddy - https reverse proxy server
- automatically obtains tls certificate
- Redirects 80 (http) to 443 (https) to Speech on 3000
- Lbrynet DAEMON started on ports 3333 and 4444
- Spee.ch started on port 3000
1. Setup OS and install dependencies
OS
Secure your server by creating a non-root sudoer.
As root# create user and add to sudo group
adduser username
usermod -aG sudo username
su - username
As username: paste public key in authorized_keys
`cd`
`mkdir .ssh`
`nano ~/.ssh/authorized_keys`
Prep
Log in as username@domainname or username@ip_address
sudo apt-get update -y
ulimit -n 8192
wget -qO- https://deb.nodesource.com/setup_8.x | sudo -E bash -
Git, Curl, Tmux, Unzip, ffmpeg, Node
sudo apt-get install git curl tmux unzip ffmpeg nodejs -y
Clone speech either from your own fork, or from the lbryio/spee.ch repo.
- For Developers - our master branch
git clone https://github.com/lbryio/spee.ch
- For Developers - your fork
git clone https://github.com/{{youraccount}}/spee.ch.git
git clone git@github.com:{{youraccount}}/spee.ch
- For Publishers and Content creators - stable release
git clone -b release https://github.com/lbryio/spee.ch
Prepare the scripts
chmod 750 -R ~/spee.ch/docs/setup
2 Secure the UFW firewall
UFW
sudo ~/spee.ch/docs/setup/scripts/firewall.sh
3 Install Caddy to handle https and reverse proxy
Get Caddy
curl https://getcaddy.com | sudo bash -s personal
Set up Caddy reverse proxy and ssl
sudo mkdir -p /opt/caddy/logs/
sudo mkdir -p /opt/caddy/store/
cp ~/spee.ch/docs/setup/conf/caddy/Caddyfile.template ~/spee.ch/docs/setup/conf/caddy/Caddyfile
nano ~/spee.ch/docs/setup/conf/caddy/Caddyfile
( Change {{EXAMPLE.COM}} to YOURDOMAIN.COM )
sudo cp ~/spee.ch/docs/setup/conf/caddy/Caddyfile /opt/caddy/
Set up Caddy to run as systemd service
sudo cp ~/spee.ch/docs/setup/conf/caddy/caddy.service /etc/systemd/system/caddy.service
sudo chmod 644 /etc/systemd/system/caddy.service
sudo chown -R www-data:www-data /opt/caddy/
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
sudo systemctl daemon-reload
sudo systemctl start caddy
sudo systemctl status caddy
q
exits
At this point, navigating to yourdomain.com should give you a 502 bad gateway error. That's good!
Now you can make sure caddy starts when the machine starts:
sudo systemctl enable caddy
4 Set up MySQL
Install MySQL
sudo apt-get install mysql-server -y
( During install, enter blank password each time if prompted. We'll set one during secure setup.)
sudo systemctl status mysql
(q to exit)
Secure Setup
sudo mysql_secure_installation
- Password your_mysql_password
- No to password validation
- Y to all other options
Login to mysql from root to complete setup:
sudo mysql
to enter mysql> console
mysql>
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_mysql_password';
mysql>
FLUSH PRIVILEGES;
Control+D
to exit
Verify:
mysql -u root -p
and then entering your_mysql_password should give you the mysql> shell
5 Get Lbrynet Daemon
Start tmux
tmux allows you to run multiple things in different sessions. Useful for manually starting daemons and watching its console logs.
tmux
Ctrl+b
, thend
detaches leaving session running.tmux
, reenters tmux, thenCtrl+b
,(
goes back to through sessions
Get the daemon
wget -O ~/latest_daemon.zip https://lbry.io/get/lbrynet.linux.zip
unzip -o -u ~/latest_daemon.zip
Start the daemon
./lbrynet start
Detatch tmux session
Control + b
, then d
-
tmux
if you want to get back into tmux -
Control+b
, then)
while in tmux session to cycle back to your lbrynet session to see output
tmux
note: Control+b
, then )
while in tmux session to cycle back to your lbrynet session to see output
Display wallet address to which to send 5+ LBC.
note: These commands work when ./lbrynet start
is already running in another tmux session
./lbrynet commands
to check out the current commands
./lbrynet address_list
to get your wallet address
Ctrl + Shift + C
after highlighting an address to copy.
Use a LBRY app or daemon to send LBC to the address. Sending LBC may take a few seconds or longer.
./lbrynet account_balance
to check your balance after you've sent LBC.
Optional/Production: Set up lbrynet to run as a systemd service
//coming soon
6 Set up spee.ch
Build it
cd spee.ch
~/spee.ch:
npm install
note: if you have installed your own local chainquery instance, you will need to specify it in your own /site/config/chainqueryConfig.json
Once your wallet has a balance, run this:
npm run configure
The script will ask for the following values:
* Database: lbry
* Username: root
* Password: your_mysql_password
* Port: 3000
* Site Title: Your Site Name
* Enter your site's domain name: https://example.com or http://localhost:3000
* Enter a directory where uploads should be stored: (/home/lbry/Uploads)
npm run build
(or npm run dev
to build for developing)
npm run start
Try it
Navigate to example.com!
7 Production
pm2 to keep your speech app running
npm install -g pm2
7 Maintenance Procedures
Change daemon
- backup wallet (private keys!) to a safe place
- wget daemon from https://github.com/lbryio/lbry/releases
- wget -O ~/your_name_daemon.zip https://your_copied_file_path.zip
- rm ./lbrynet
- unzip -o -u ~/your_name_daemon.zip