Skip to main content

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 SituationRecommended MethodSuitable For
You just want to try it on your own Windows computerWindows One-Click DeploymentNo server, don't want to install complex software
You don’t have a server yet but need someone to fill out formsCloud Server + aaPanel DeploymentBeginner users, needing public access via a link
You have a cloud server and already installed aaPanelaaPanel One-Click DeploymentNot familiar with the command line, wanting to complete tasks using a webpage
You have a cloud server and can execute commandsDocker Compose DeploymentWanting long-term use, data stored in MySQL for greater stability
You already know how to configure NginxFrontend & Backend Separation DeploymentWanting to use Nginx to proxy frontend and backend interfaces
You have a Synology NASSynology NAS One-Click DeploymentWanting to use it internally within your home, office, or school
You have an fnOS NASfnOS NAS One-Click DeploymentWanting to deploy using the Docker page of a NAS
You already use DockerDocker DeploymentQuickly starting a container
You need to control Java, MySQL, and startup scripts yourselfLinux Manual DeploymentTechnical personnel maintaining the server
aaPanel One-Click Deployment doesn’t meet your requirementsaaPanel Manual DeploymentNeed to upload jar files and database scripts manually
tip

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 via http://192.168.1.23:1991 on your phone.
  • SurveyKing is deployed on a cloud server: You access it via http://server_public_ip:1991 and 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.properties in the same directory as start.bat and write server.port=8080.
  • Docker: Change the command from -p 1991:1991 to -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.