How to Deploy Community Edition
The Community Edition version is currently the latest at v1.12.0. If you just want to get started quickly, choose “Windows One-Click Deployment” or “aaPanel One-Click Deployment” first. To use it long-term on a server, choose “Docker Compose Deployment” instead.
Choosing a Deployment Method
| Your Situation | Recommended Method | Suitable For |
|---|---|---|
| You just want to try it on your own Windows computer | Windows One-Click Deployment | No server, don't want to install complex software |
| You don’t have a server yet but need someone to fill out forms | Cloud Server + aaPanel Deployment | Beginner users, needing public access via a link |
| You have a cloud server and already installed aaPanel | aaPanel One-Click Deployment | Not familiar with the command line, wanting to complete tasks using a webpage |
| You have a cloud server and can execute commands | Docker Compose Deployment | Wanting long-term use, data stored in MySQL for greater stability |
| You already know how to configure Nginx | Frontend & Backend Separation Deployment | Wanting to use Nginx to proxy frontend and backend interfaces |
| You have a Synology NAS | Synology NAS One-Click Deployment | Wanting to use it internally within your home, office, or school |
| You have an fnOS NAS | fnOS NAS One-Click Deployment | Wanting to deploy using the Docker page of a NAS |
| You already use Docker | Docker Deployment | Quickly starting a container |
| You need to control Java, MySQL, and startup scripts yourself | Linux Manual Deployment | Technical personnel maintaining the server |
| aaPanel One-Click Deployment doesn’t meet your requirements | aaPanel Manual Deployment | Need to upload jar files and database scripts manually |
For beginners, don't choose Linux Manual Deployment first. It works, but troubleshooting requires some knowledge of servers, databases, and the command line.
Initialization, Backup, and Upgrade
After successful deployment, if you enter /setup for the first time, complete initialization by following Initialization, Backup, and Upgrade.
Before using it formally, we recommend reviewing the backup instructions in the same document. When upgrading, migrating servers, or changing deployment methods, always export a backup first.
Frequently Asked Questions
Why can't people scan the QR code link to open the survey?
First, access the link in the QR code. If the link is localhost, 127.0.0.1 or 192.168.x.x, external users usually cannot open it.
These addresses are only suitable for local or network access. When you need to allow external users, such as companies, schools, and customers, to fill out surveys, deploy it to a cloud server and use http://server_public_ip:1991 or a domain name to open the admin console and generate a QR code.
See details in: Cloud Server + aaPanel Deployment.
Why can’t I open http://localhost:1991 on my phone?
localhost means “on the current device”.
When you enter http://localhost:1991 in your browser on your computer, you are accessing SurveyKing on that computer. When you enter the same address on your phone, you are accessing your phone itself, so it cannot open.
There are two situations when accessing your phone:
- SurveyKing is deployed on your own computer: Your phone and computer are connected to the same Wi-Fi network. You can find the local IP address on your computer, such as
192.168.1.23, and access it viahttp://192.168.1.23:1991on your phone. - SurveyKing is deployed on a cloud server: You access it via
http://server_public_ip:1991and ensure that the security group and firewall of the cloud server allow port 1991.
When deploying SurveyKing on Windows, if you still cannot open it on your phone, it’s likely that Windows Firewall is blocking Java or port 1991.
Do I need to buy a server?
Not necessarily.
If you are just using it on your own computer, you can use Windows One-Click Deployment. If you need colleagues, students, and customers to access it at any time, deploy it to a cloud server and bind a domain name.
H2 database vs. MySQL database – which should I choose?
H2 is an embedded database that doesn’t require separate installation. It's suitable for testing and small-scale demonstrations.
MySQL requires one extra configuration step, but it’s better suited for long-term data storage. For formal use, multiple users filling out surveys, and important data, choose Docker Compose Deployment or manually configure MySQL.
In version v1.12.0, you can complete the MySQL initialization directly on the /setup page without needing to manually import init-mysql.sql. See details in: Initialization, Backup, and Upgrade.
What if port 1991 is already in use?
Change the external port to another number, such as 8080.
The method for changing it depends on the deployment method:
- Windows: Create a file named
application.propertiesin the same directory asstart.batand writeserver.port=8080. - Docker: Change the command from
-p 1991:1991to-p 8080:1991. - Docker Compose: Execute the one-click script with the new port, or use
SK_APP_PORT=8080 bash setup.sh. - aaPanel: In the project settings, change the project port to the new port.
- Frontend & Backend Separation: Usually keep backend port 1991 open to the public and proxy it via Nginx’s ports 80 or 443.
After changing, you also need to update the access address, such as http://localhost:8080.
How do I upgrade to a new version?
First, back up your data, then update the program files or Docker image.
If the release notes include a database upgrade script, execute the script in order. If there is no database script, you usually just need to replace the program and restart it.
See details in: Initialization, Backup, and Upgrade.