2014-01-22 23:11:26 +00:00
|
|
|
# MySQL server details
|
|
|
|
# server: domain or IP of MySQL server
|
|
|
|
# database: a MySQL database that the user specified has read/write access to
|
|
|
|
# user: username to authenticate as
|
|
|
|
# password: password for user
|
|
|
|
mysql:
|
|
|
|
server: 'localhost'
|
2015-02-14 22:20:26 +00:00
|
|
|
port: 3306
|
2014-01-22 23:11:26 +00:00
|
|
|
database: 'cytube3'
|
|
|
|
user: 'cytube3'
|
2014-01-26 06:01:36 +00:00
|
|
|
password: ''
|
2017-02-03 07:05:50 +00:00
|
|
|
pool-size: 10
|
2014-01-22 23:11:26 +00:00
|
|
|
|
2014-04-11 15:52:51 +00:00
|
|
|
# Define IPs/ports to listen on
|
|
|
|
# Each entry MUST define ip and port (ip can be '' to bind all available addresses)
|
|
|
|
# Each entry should set http, https, and/or io to true to listen for the corresponding
|
|
|
|
# service on that port. http/io and https/io can be combined, but if http and https
|
|
|
|
# are both specified, only https will be bound to that port.
|
|
|
|
#
|
2014-06-13 03:31:22 +00:00
|
|
|
# If you don't specify a url, the url io.domain:port or https.domain:port will be assumed
|
|
|
|
# for non-ssl and ssl websockets, respectively. You can override this by specifying the
|
|
|
|
# url for a websocket listener.
|
2014-04-11 15:52:51 +00:00
|
|
|
listen:
|
|
|
|
# Default HTTP server - default interface, port 8080
|
|
|
|
- ip: ''
|
|
|
|
port: 8080
|
|
|
|
http: true
|
|
|
|
# Uncomment below to enable HTTPS/SSL websockets
|
|
|
|
# Note that you must also set https->enabled = true in the https definition
|
|
|
|
# - ip: ''
|
|
|
|
# port: 8443
|
|
|
|
# https: true
|
|
|
|
# io: true
|
|
|
|
# Default Socket.IO server - default interface, port 1337
|
|
|
|
- ip: ''
|
|
|
|
port: 1337
|
|
|
|
io: true
|
|
|
|
# Example of how to bind an extra port to HTTP and Socket.IO
|
|
|
|
# - ip: ''
|
|
|
|
# port: 8081
|
|
|
|
# http: true
|
|
|
|
# io: true
|
2014-06-13 03:31:22 +00:00
|
|
|
# url: 'http://my-other-thing.site.com:8081'
|
2014-04-11 15:52:51 +00:00
|
|
|
|
2014-01-22 23:11:26 +00:00
|
|
|
# HTTP server details
|
|
|
|
http:
|
2014-04-11 15:52:51 +00:00
|
|
|
# Even though you may specify multiple ports to listen on for HTTP above,
|
|
|
|
# one port must be specified as default for the purposes of generating
|
|
|
|
# links with the appropriate port
|
|
|
|
default-port: 8080
|
2014-02-26 16:50:59 +00:00
|
|
|
# Specifies the root domain for cookies. If you have multiple domains
|
|
|
|
# e.g. a.example.com and b.example.com, the root domain is example.com
|
|
|
|
root-domain: 'localhost'
|
2014-02-28 02:50:47 +00:00
|
|
|
# Specify alternate domains/hosts that are allowed to set the login cookie
|
|
|
|
# Leave out the http://
|
|
|
|
alt-domains:
|
|
|
|
- '127.0.0.1'
|
2014-02-04 17:32:52 +00:00
|
|
|
# Use express-minify to minify CSS and Javascript
|
|
|
|
minify: false
|
2014-11-17 03:06:10 +00:00
|
|
|
# Max-Age for caching. Value should be an integer in milliseconds or a string accepted by
|
|
|
|
# the `ms` module. Set to 0 to disable caching.
|
|
|
|
max-age: '7d'
|
|
|
|
# Set to false to disable gzip compression
|
|
|
|
gzip: true
|
|
|
|
# Customize the threshold byte size for applying gzip
|
|
|
|
gzip-threshold: 1024
|
2015-02-16 03:56:00 +00:00
|
|
|
# Secret used for signed cookies. Can be anything, but make it unique and hard to guess
|
|
|
|
cookie-secret: 'change-me'
|
2016-05-21 23:59:28 +00:00
|
|
|
index:
|
|
|
|
# Maximum number of channels to display on the index page public channel list
|
|
|
|
max-entries: 50
|
2017-06-28 06:37:18 +00:00
|
|
|
# Configure trusted proxy addresses to map X-Forwarded-For to the client IP.
|
|
|
|
# See also: https://github.com/jshttp/proxy-addr
|
|
|
|
trust-proxies: ['loopback']
|
2014-01-22 23:11:26 +00:00
|
|
|
|
|
|
|
# HTTPS server details
|
|
|
|
https:
|
|
|
|
enabled: false
|
2014-04-11 15:52:51 +00:00
|
|
|
# Even though you may specify multiple ports to listen on for HTTPS above,
|
|
|
|
# one port must be specified as default for the purposes of generating
|
|
|
|
# links with the appropriate port
|
|
|
|
default-port: 8443
|
2014-01-22 23:11:26 +00:00
|
|
|
domain: 'https://localhost'
|
|
|
|
keyfile: 'localhost.key'
|
|
|
|
passphrase: ''
|
|
|
|
certfile: 'localhost.cert'
|
2014-03-06 04:26:10 +00:00
|
|
|
cafile: ''
|
2015-03-05 04:42:01 +00:00
|
|
|
ciphers: 'HIGH:!DSS:!aNULL@STRENGTH'
|
2014-01-22 23:11:26 +00:00
|
|
|
|
2014-01-25 19:55:00 +00:00
|
|
|
# Page template values
|
2014-01-26 06:01:36 +00:00
|
|
|
# title goes in the upper left corner, description goes in a <meta> tag
|
2014-01-25 19:55:00 +00:00
|
|
|
html-template:
|
2016-11-03 05:55:14 +00:00
|
|
|
title: 'Sync'
|
2014-01-25 19:55:00 +00:00
|
|
|
description: 'Free, open source synchtube'
|
|
|
|
|
2014-01-22 23:11:26 +00:00
|
|
|
# Socket.IO server details
|
|
|
|
io:
|
2014-02-26 16:57:49 +00:00
|
|
|
# In most cases this will be the same as the http.domain.
|
|
|
|
# However, if your HTTP traffic is going through a proxy (e.g. cloudflare)
|
|
|
|
# you will want to set up a passthrough domain for socket.io.
|
|
|
|
# If the root of this domain is not the same as the root of your HTTP domain
|
|
|
|
# (or HTTPS if SSL is enabled), logins won't work.
|
|
|
|
domain: 'http://localhost'
|
2014-04-11 15:52:51 +00:00
|
|
|
# Even though you may specify multiple ports to listen on for HTTP above,
|
|
|
|
# one port must be specified as default for the purposes of generating
|
|
|
|
# links with the appropriate port
|
|
|
|
default-port: 1337
|
2014-01-22 23:11:26 +00:00
|
|
|
# limit the number of concurrent socket connections per IP address
|
|
|
|
ip-connection-limit: 10
|
2016-01-07 05:42:48 +00:00
|
|
|
# Whether or not to use zlib to compress each socket message (this option is
|
|
|
|
# passed through to socket.io/engine.io).
|
|
|
|
# Note that while this may save a little bandwidth, it also consumes a lot
|
|
|
|
# more CPU and will bottleneck pretty quickly under heavy load.
|
|
|
|
per-message-deflate: false
|
2014-01-22 23:11:26 +00:00
|
|
|
|
2015-03-27 23:44:46 +00:00
|
|
|
# YouTube v3 API key
|
|
|
|
# See https://developers.google.com/youtube/registering_an_application
|
2015-06-07 15:45:23 +00:00
|
|
|
# YouTube links will not work without this!
|
|
|
|
# Instructions:
|
|
|
|
# 1. Go to https://console.developers.google.com/project
|
|
|
|
# 2. Create a new API project
|
|
|
|
# 3. On the left sidebar, click "Credentials" under "APIs & auth"
|
|
|
|
# 4. Click "Create new Key" under "Public API access"
|
|
|
|
# 5. Click "Server key"
|
|
|
|
# 6. Under "APIs & auth" click "YouTube Data API" and then click "Enable API"
|
2015-03-27 23:44:46 +00:00
|
|
|
youtube-v3-key: ''
|
2014-02-06 16:37:00 +00:00
|
|
|
# Limit for the number of channels a user can register
|
|
|
|
max-channels-per-user: 5
|
2014-02-10 01:52:24 +00:00
|
|
|
# Limit for the number of accounts an IP address can register
|
|
|
|
max-accounts-per-ip: 5
|
2014-01-22 23:11:26 +00:00
|
|
|
# Minimum number of seconds between guest logins from the same IP
|
|
|
|
guest-login-delay: 60
|
|
|
|
|
2017-06-16 07:16:59 +00:00
|
|
|
# Allows you to customize the path divider. The /r/ in http://localhost/r/yourchannel
|
|
|
|
# Acceptable characters are a-z A-Z 0-9 _ and -
|
|
|
|
channel-path: 'r'
|
|
|
|
# Allows you to blacklist certain channels. Users will be automatically kicked
|
|
|
|
# upon trying to join one.
|
|
|
|
channel-blacklist: []
|
|
|
|
# Minutes between saving channel state to disk
|
|
|
|
channel-save-interval: 5
|
|
|
|
# Determines channel data storage mechanism.
|
|
|
|
# Defaults to 'file', in which channel data is JSON stringified and saved to a file
|
|
|
|
# in the `chandump/` folder. This is the legacy behavior of CyTube.
|
|
|
|
# The other possible option is 'database', in which case each key-value pair of
|
|
|
|
# channel data is stored as a row in the `channel_data` database table.
|
|
|
|
# To migrate legacy chandump files to the database, shut down CyTube (to prevent
|
|
|
|
# concurrent updates), then run `node lib/channel-storage/migrate.js`.
|
|
|
|
channel-storage:
|
|
|
|
type: 'file'
|
|
|
|
|
2014-01-22 23:11:26 +00:00
|
|
|
# Configure periodic clearing of old alias data
|
|
|
|
aliases:
|
|
|
|
# Interval (in milliseconds) between subsequent runs of clearing
|
|
|
|
purge-interval: 3600000
|
|
|
|
# Maximum age of an alias (in milliseconds) - default 1 month
|
|
|
|
max-age: 2592000000
|
2014-02-03 02:04:50 +00:00
|
|
|
|
|
|
|
# Workaround for Vimeo blocking my domain
|
|
|
|
vimeo-workaround: false
|
2014-02-06 00:05:52 +00:00
|
|
|
|
|
|
|
# Regular expressions for defining reserved user and channel names and page titles
|
|
|
|
# The list of regular expressions will be joined with an OR, and compared without
|
|
|
|
# case sensitivity.
|
|
|
|
#
|
|
|
|
# Default: reserve any name containing "admin[istrator]" or "owner" as a word
|
|
|
|
# but only if it is separated by a dash or underscore (e.g. dadmin is not reserved
|
|
|
|
# but d-admin is)
|
|
|
|
reserved-names:
|
|
|
|
usernames:
|
|
|
|
- '^(.*?[-_])?admin(istrator)?([-_].*)?$'
|
|
|
|
- '^(.*?[-_])?owner([-_].*)?$'
|
|
|
|
channels:
|
|
|
|
- '^(.*?[-_])?admin(istrator)?([-_].*)?$'
|
|
|
|
- '^(.*?[-_])?owner([-_].*)?$'
|
|
|
|
pagetitles: []
|
2014-02-14 00:15:22 +00:00
|
|
|
|
|
|
|
# Provide a contact list for the /contact page
|
2016-11-02 05:44:26 +00:00
|
|
|
# Example:
|
|
|
|
# contacts:
|
|
|
|
# - name: 'my_name'
|
|
|
|
# title: 'administrator
|
|
|
|
# email: 'me@my.site'
|
|
|
|
contacts: []
|
2014-04-11 02:54:46 +00:00
|
|
|
|
2014-06-09 04:03:29 +00:00
|
|
|
playlist:
|
|
|
|
max-items: 4000
|
|
|
|
# How often (in seconds), mediaUpdate packets are broadcast to clients
|
|
|
|
update-interval: 5
|
|
|
|
|
2014-04-11 02:54:46 +00:00
|
|
|
# If set to true, when the ipThrottle and lastguestlogin rate limiters are cleared
|
|
|
|
# periodically, the garbage collector will be invoked immediately.
|
|
|
|
# The server must be invoked with node --expose-gc index.js for this to have any effect.
|
|
|
|
aggressive-gc: false
|
2014-05-22 03:33:24 +00:00
|
|
|
|
2014-06-04 04:21:00 +00:00
|
|
|
# If you have ffmpeg installed, you can query metadata from raw files, allowing
|
|
|
|
# server-synched raw file playback. This requires the following:
|
|
|
|
# * ffmpeg must be installed on the server
|
|
|
|
ffmpeg:
|
|
|
|
enabled: false
|
2015-05-19 23:48:08 +00:00
|
|
|
# Executable name for ffprobe if it is not "ffprobe". On Debian and Ubuntu (on which
|
|
|
|
# libav is used rather than ffmpeg proper), this is "avprobe"
|
|
|
|
ffprobe-exec: 'ffprobe'
|
2014-09-13 05:01:54 +00:00
|
|
|
|
|
|
|
link-domain-blacklist: []
|
2015-02-21 08:12:26 +00:00
|
|
|
|
|
|
|
# Drop root if started as root!!
|
|
|
|
setuid:
|
|
|
|
enabled: false
|
|
|
|
group: 'users'
|
|
|
|
user: 'user'
|
2015-02-23 22:08:43 +00:00
|
|
|
# how long to wait in ms before changing uid/gid
|
|
|
|
timeout: 15
|
2015-10-01 04:55:45 +00:00
|
|
|
|
2016-07-16 05:06:27 +00:00
|
|
|
# Allows for external services to access the system commandline
|
|
|
|
# Useful for setups where stdin isn't available such as when using PM2
|
|
|
|
service-socket:
|
|
|
|
enabled: false
|
|
|
|
socket: 'service.sock'
|
2016-09-19 04:35:08 +00:00
|
|
|
|
|
|
|
# Twitch Client ID for the data API (used for VOD lookups)
|
|
|
|
# https://github.com/justintv/Twitch-API/blob/master/authentication.md#developer-setup
|
|
|
|
twitch-client-id: null
|
2017-03-21 04:37:32 +00:00
|
|
|
|
|
|
|
poll:
|
|
|
|
max-options: 50
|