[1.0.0 WIP] Hosting Feedback Instance

[STILL WORK IN PROGRESS, DO NOT USE] How to run Feedbacky on your own server.

Installation guide is made for Linux users, Windows or Mac OS users may need different set up to run Feedbacky Instance.

Prerequisites

Installation

  1. Create a file called docker-compose.yml inside folder where you want to host Feedbacky instance and fill it with these contents:

version: '3.3'
services:
feedbacky-client:
container_name: feedbacky-client
environment:
- REACT_APP_SERVER_IP_ADDRESS=${REACT_APP_SERVER_IP_ADDRESS}
- REACT_APP_SERVICE_NAME=${REACT_APP_SERVICE_NAME}
- REACT_APP_DEFAULT_USER_AVATAR=${REACT_APP_DEFAULT_USER_AVATAR}
ports:
- '${CLIENT_APP_PORT}:80'
links:
- feedbacky-server
volumes:
- feedbacky-data:/storage-data
image: plajer/feedbacky-proxy
restart: always
feedbacky-server:
container_name: feedbacky-server
ports:
- '${SERVER_APP_PORT}:8080'
volumes:
- feedbacky-data:/storage-data
env_file:
- .env
image: plajer/feedbacky-server
restart: always
volumes:
feedbacky-data:

2. Create a file called .env inside the same folder and fill it with contents located here.

Configuring Environment Variables (Aka editing .env)

  • Inside .env file edit MySQL related variables, fill MYSQL_USERNAME, MYSQL_PASSWORD and MYSQL_URL with proper data.

Please note that localhost won't work in MYSQL_URL variable due to nature of Docker (container is considered as a remote machine). IP of server must be provided and MySQL must be configured to accept non localhost connections.

To allow non localhost connections modify bind-address at /etc/mysql/mysql.conf.d/mysqld.cnf to 0.0.0.0,restart mysql service with service mysql restart and create MySQL user with % login access eg. 'feedbacky'@'%'.

  • Fill JWT_SECRET with safely generated text at https://www.grc.com/passwords.htm or any other JWT secret token generator page online. (Random ASCII characters recommended)

  • If you have any other apps running on ports 8090 or 8095 replace CLIENT_APP_PORT and SERVER_APP_PORT with ports that won't collide.

  • Replace REACT_APP_SERVER_IP_ADDRESS with your server IP and CLIENT_APP_PORT Correctly set REACT_APP_SERVER_IP_ADDRESS should look like:

    • ​✅(Correct) http://188.222.333.22:8090

    • ​❌ (Wrong) http://188.222.333.22:8090/ (Do not use / at the end)

    • ​❌ (Wrong) 188.222.333.22:8090 (http:// is missing)

    • ​❌ (Wrong) http://188.222.333.22 (No port :8090 provided)

    Check link below if you want to configure Feedbacky to use your own domain name not numeric IP.

  • Configure mail server settings, set MAIL_SENDER to no reply email you wish to use. Set MAIL_SERVICE_TYPE to one of the following types:

Type

Provider Name

Limits

smtp

Custom Mail Server

------------

mailgun

Mailgun

5k mails/3mo then 0.80$/1k mails

sendgrid

SendGrid

40k mails/1mo then 100 mails/day

Pricing last updated 06.2020

  • Based on your choice fill proper variables (for Mailgun, MAIL_MAILGUN_API_KEY and MAIL_MAILGUN_API_BASE_URL, for SMTP MAIL_SMTP_USERNAME, MAIL_SMTP_PASSWORD, MAIL_SMTP_HOST and MAIL_SMTP_PORT)

  • (Optional) Enable image compression to compress all images sent to the service. Set IMAGE_COMPRESSION_TYPE to one of the following types:

Type

Provider Name

Limits

cheetaho

CheetahO

500 images/mo

Pricing last updated 06.2020

  • Based on your choice fill proper variables (for CheetahO, IMAGE_COMPRESSION_CHEETAHO_API_KEY)

Configuring OAuth apps

Feedbacky is passwordless service and relies on 3rd party services to register and log in. Currently supported OAuth providers are:

  • Discord

  • Google

  • GitHub

Discord

To enable Discord login support go to https://discord.com/developers/applications and create new application. Create redirect to your Feedbacky instance (IP from REACT_APP_SERVER_IP_ADDRESS variable) and include /auth/discord at the end.

Click here for short setup video.

Then to allow logging in via Discord set OAUTH_DISCORD_ENABLED to true and fill OAUTH_DISCORD_REDIRECT_URI, OAUTH_DISCORD_CLIENT_ID and OAUTH_DISCORD_CLIENT_SECRET with credentials you get from OAuth app.

GitHub

To enable GitHub login support go to https://github.com/settings/developers and create new OAuth app. Set Authorization callback URL to REACT_APP_SERVER_IP_ADDRESS and include /auth/github at the end.

Click here for short setup video.

Then to allow logging in via GitHub set OAUTH_GITHUB_ENABLED to true and fill OAUTH_GITHUB_REDIRECT_URI, OAUTH_GITHUB_CLIENT_ID and OAUTH_GITHUB_CLIENT_SECRET with credentials you get from OAuth app.

Google

To enable Google login support go to https://console.developers.google.com/ and create new project. todo

Then to allow logging in via Google set OAUTH_GOOGLE_ENABLED to true and fill OAUTH_GOOGLE_REDIRECT_URI, OAUTH_GOOGLE_CLIENT_ID and OAUTH_GOOGLE_CLIENT_SECRET with credentials you get from OAuth app.

Running Feedbacky in the background

Via screen

You can keep track of Feedbacky instance via screen command. Create new screen with screen -S <screen name> and go to feedbacky-project folder, to enter screen again after you leave your SSH session just type screen -r <screen name>.

Finish - Download sources and start

Begin the code download process by doing docker-compose up, downloaded libraries should be less than 200 MB. After everything is downloaded feedbacky-server instance should start and then you can access your Feedbacky page.