Configuration v2.4.6 (OUTDATED)
Clone this wiki locally
The following page aims to assist you in configuring your CyTube server. Prior to following these instructions, you should have installed the software using the guidelines in the Installing wiki page.
CyTube requires a MySQL database. We will create a new user for CyTube to authenticate as (I strongly advise against using the root account for your CyTube database user)
mysql -u root -p (Enter password)
> GRANT USAGE ON *.* TO some_user@localhost IDENTIFIED BY 'some_password'; > CREATE DATABASE sync_db; > GRANT ALL PRIVILEGES ON sync_db.* TO some_user@localhost;
Make sure you remember the username (
some_user), the password (
some_password), and the database name (
sync_db), you'll need it later for the CyTube configuration file.
CyTube Server Configuration
Run the server once to generate a template
cfg.json file (it will warn you that it's generating a new configuration file):
Below are explained the configuration keys:
mysql-server- The host address of the MySQL database. If you installed MySQL to the same machine on which you're installing CyTube, use
mysql-db- The MySQL database that CyTube has permission to use
mysql-user- The MySQL user that CyTube should authenticate as
mysql-pw- Password for
express-host- If your server has multiple IPv4 addresses, you can specify which address CyTube should bind to. The default (
0.0.0.0) binds to all available IPs.
io-host- Equivalent to
express-host, except for socket.io connections
enable-ssl- Whether or not to listen for secure HTTPS and WSS connections
ssl-keyfile- Path to
.keyfile for your SSL certificate
ssl-passphrase- Passphrase to unlock your SSL key
ssl-certfile- Path to
.crtfile for your SSL certificate
ssl-port- Port to listen on for SSL. Binding port 443 requires the application to be run as root. I use port 8443, and set up an iptables rule to forward traffic from port 443 to 8443.
asset-cache-ttl- Allows you to set the duration that clients may cache web assets (in milliseconds)
web-port- The port to use for HTTP traffic NOTE: binding to port 80 requires root permissions
io-port- The port to use for Socket.IO traffic NOTE: some firewalls block websockets on port 8080
ip-connection-limit- The maximum number of Socket.IO connections that may be open at a time from the same IP address
guest-login-delay- Number of seconds required to wait between guest logins
channel-save-interval- Interval at which to save all channels (in minutes). Default every 5 minutes. Note that channels should be saved automatically on graceful shutdown; this feature is in case of unexpected shutdowns.
trust-x-forward- Read clients' IP addresses from the
X-Forwarded-Forheader. Only use this if you know what you are doing, because if you're not actually behind a proxy this can be used to fake IP addresses
enable-mail- Allows you to disable/enable using
nodemailerto send password reset links
mail-config- See documentation for nodemailer
mail-from- When sending password reset emails, the address to send in the
domain- When sending password reset links, the domain to use as the base name. Reset links are of the form
ytv3apikey- API key for using the YouTube v3 API
enable-ytv3- Uses YouTube v3 API for single video queries. v2 is still used for playlists and searches.
ytv2devkey- Developer key for YouTube v2 API (not required - uses anonymous API by default)
stat-interval- Interval (in milliseconds) at which to record statistics datapoints
stat-max-age- Maximum age (in milliseconds) of a stat point before it is deleted
alias-purge-interval- Interval (in milliseconds) at which aliases older than
alias-max-agewill be cleared from the database
alias-max-age- Maximum age (in milliseconds) of an alias (ip, name, time triplet) record before it is deleted from the database
CyTube client configuration
Now that your server's configured, we just need to change a few values so the client knows where to connect. Open up
www/assets/js/iourl.js in your favourite text editor.
IO_URLto use your server's address and the port number you chose as
WEB_URLto use your server's address and the port number you chose as
- If you are allowing SSL, set
SSL_URLwith the appropriate details
var IO_URL = "http://synch.somedomain.com:8080"; var WEB_URL = "http://synch.somedomain.com:8089"; var SSL_URL = "http://synch.somedomain.com:8443"; var ALLOW_SSL = true;
You should now have a working CyTube server! Start it up by executing
node index.js. You can also use the provided
run.sh file to auto-restart the server if it crashes.
To launch it without needing to keep your terminal open, you can use screen (
screen ./run.sh), tmux, nohup, or similar tools.
Navigate to your server address (the value of
WEB_URL) and click Account. Click Register and create an account for yourself. To make this account an administrator (say the name is "admin"), do the following:
mysql -u some_user -p sync_db (enter password)
> UPDATE registrations SET global_rank=1000 WHERE uname='admin';
Any rank >= 255 is a site administrator.
CyTube is under development and frequently updates. To apply these updates, you can use git to fetch the latest changes from the repository. Execute
git pull from the sync directory, and restart the server. If you get an error message, you may need to run an update script (
node update.js) or update the node dependencies (
npm update). Be sure to read the commit messages on GitHub to see what's changing, and whether any administrator intervention is required.
The administration control panel (located at
acp.html) provides a convenient overlook of the server to administrators. You can view log files, statistics, users, channels, and more.
If you need help, come to IRC: http://webchat.6irc.net/?channels=cytube