Installation Guide
Viglet Shio (https://www.viglet.org/shio/) is an open-source, agent-ready CMS (https://github.com/openviglet/shio) that lets you model content, query it via GraphQL, and build websites using JavaScript with native caching and search.
Installing Java
Section titled “Installing Java”Shio requires Java.
During installation, Shio reads the JAVA_HOME and PATH variables to install the necessary services. Therefore, you must modify the variables as specified here:
-
On Windows:
- Set the JAVA_HOME system variable to point to the JAVA location.
- Attach the PATH system variable with
%JAVA_HOME%/bin.
-
On Unix:
- Create an environment variable called JAVA_HOME.
- Provide the JAVA bin path in the PATH variable.
Shio Requirements
Section titled “Shio Requirements”The information below describes the resource modes available to run Shio.
Hardware Requirements
Section titled “Hardware Requirements”| Minimum | Recommended |
|---|---|
| Single 1.5 GHz processor, 1 GB available memory | Dual 2 GHz processors with Hyper-Threading enabled, 2 GB available memory |
In addition, the following is required:
- 1GB of disk space for software.
- A compatible version of a database.
Installing and Configuring Databases
Section titled “Installing and Configuring Databases”Shio supports multiple database platforms, each with specific unique requirements to maximize effectiveness with Shio.
Shio Database Table Requirements
Section titled “Shio Database Table Requirements”Shio uses multiple tables in multiple databases (also called database schemas by some vendors such as Oracle). You must create new databases / schemas that will contain the sets of tables described below.
Oracle Database Requirements
Section titled “Oracle Database Requirements”This section describes configuration requirements for an existing database.
To set up an Oracle database:
- Install and configure a single database instance for use by Shio.
- Create a database schema to contain the Shio system tables.
- Configure the Shio admin user for the database. For Oracle, the database user with the grant of the CONNECT and RESOURCE roles. Make sure the user has UNLIMITED TABLESPACE and CREATE VIEW privileges.
Microsoft SQL Server Database Requirements
Section titled “Microsoft SQL Server Database Requirements”When creating the Shio database, use the following options:
- You must install the Database Engine feature and Management Tools are recommended.
- Set the Collation configuration variable to
SQL_Latin1_General_CP1_CS_ASorLatin1_General / Case-sensitive / Accent-Sensitive. - Set authentication mode to mixed mode.
- Shio system user cannot be sa.
Configuring the SQL Server Database and Schemas
Section titled “Configuring the SQL Server Database and Schemas”To create the SQL Server database:
- Select Databases > New Database.
- Enter the database name (eg shio) and the size of the data and log files according to the environment.
- Go to the Options page and set the following values:
- Collation =
Latin1_General_CS_ASorSQL_Latin1_General_CP1_CS_AS - Miscellaneous > Allow Snapshot Isolation = True
- Miscellaneous > Is Read Committed Snapshot On = True
- Collation =
USE masterGOALTER DATABASE shioSET SINGLE_USERWITH ROLLBACK IMMEDIATEGOALTER DATABASE shioSET ALLOW_SNAPSHOT_ISOLATION ONGOALTER DATABASE shioSET READ_COMMITTED_SNAPSHOT ONGOALTER DATABASE shioSET MULTI_USERGO-
Under Security > Logins, select New Login:
- Enter the Login name (for example, shio)
- Deselect the Enforce Password Expiration option
- Set the Default database
-
On the User Mapping page:
- Default user = shio
- Default schema = shio
- Select the option for db_owner
PostgreSQL Database Requirements
Section titled “PostgreSQL Database Requirements”Installing and configuring the PostgreSQL Database
Section titled “Installing and configuring the PostgreSQL Database”To install the PostgreSQL database:
- Navigate to https://www.postgresql.org/docs/manuals/ and follow the instructions.
To configure the PostgreSQL instance, open postgresql.conf and set:
max_connections = 10max_prepared_transactions = 10shared_buffers = 512MBautovacuum = offThe autovacuum daemon must be re-enabled after installing and configuring Shio.
Configuring the Shio user, database, and schemas
Section titled “Configuring the Shio user, database, and schemas”When you create a database table in PostgreSQL, the field name must be lowercase.
- Create a user:
CREATE USER shio PASSWORD <password> with createuser;- Create the database:
CREATE DATABASE shio_db;ALTER DATABASE shio_db OWNER TO shio;- Log in and create the schema:
$psql -U shio -d shio_dbCREATE SCHEMA shio;ALTER SCHEMA shio OWNER TO shio;ALTER USER shio SET SEARCH_PATH = shio;
Installing Shio
Section titled “Installing Shio”Option 1: Docker (fastest)
Section titled “Option 1: Docker (fastest)”Pull the pre-built image published to the GitHub Container Registry (ghcr.io) by the Publish Docker Image GitHub Action:
docker pull ghcr.io/openviglet/shio-ce:latestdocker run -p 2710:2710 -e SHIO_ADMIN_PASSWORD=change-me-please ghcr.io/openviglet/shio-ce:latestSHIO_ADMIN_PASSWORD (minimum six characters) gives the container a usable admin login on its
first start, instead of waiting for someone to open the console and set one. Leave it out and the
console asks on first access instead. See
Setting the admin password without the console.
The image is tuned for one container per instance: it starts from a class data sharing
archive built into the image, and runs with JAVA_OPTS="-XX:+UseSerialGC -Xms64m -Xmx512m".
For a larger deployment, set your own JAVA_OPTS, for example
-e JAVA_OPTS="-XX:+UseG1GC -Xms1g -Xmx2g". The class data sharing archive is not part of
JAVA_OPTS, so overriding it keeps the faster start.
Option 2: JAR download
Section titled “Option 2: JAR download”Go to https://www.viglet.org/shio/download/ and click on “Download Shio” button to download the viglet-shio.jar executable.
Copy the viglet-shio.jar to /appl/viglet/shio/server:
mkdir -p /appl/viglet/shio/servercp viglet-shio.jar /appl/viglet/shio/serverOption 3: Build from source
Section titled “Option 3: Build from source”git clone https://github.com/openviglet/shio.gitcd shiomvn clean package -pl shio-appcp shio-app/target/viglet-shio.jar /appl/viglet/shio/server/Database
Section titled “Database”By default, Shio uses H2 as its embedded database, but if you prefer another database you can create an external properties file and reference it at startup using --spring.config.additional-location.
Create /appl/viglet/shio/server/viglet-shio.properties:
spring.datasource.url=jdbc:mariadb://localhost:3306/shiospring.datasource.username=shiospring.datasource.password=shiospring.datasource.driver-class-name=org.mariadb.jdbc.Driverspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialectOracle Database
Section titled “Oracle Database”spring.datasource.url=jdbc:oracle:thin:@localhost:1521/shiospring.datasource.username=shiospring.datasource.password=shiospring.datasource.driver-class-name=oracle.jdbc.OracleDriverspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialectPostgreSQL
Section titled “PostgreSQL”spring.datasource.url=jdbc:postgresql://localhost:5432/shiospring.datasource.username=shiospring.datasource.password=shiospring.datasource.driver-class-name=org.postgresql.Driverspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL94DialectThen start Shio referencing the properties file:
java -Xmx1g -Xms1g -jar viglet-shio.jar \ --spring.config.additional-location=file:/appl/viglet/shio/server/viglet-shio.properties
Creating Shio Service on Linux
Section titled “Creating Shio Service on Linux”As root, create a /etc/systemd/system/shio.service file with the following lines:
[Unit]Description=Viglet ShioAfter=syslog.target
[Service]User=vigletGroup=vigletWorkingDirectory=/appl/viglet/shio/serverExecStart=/appl/java/jdk21/bin/java -Xmx1g -Xms1g \ -jar /appl/viglet/shio/server/viglet-shio.jar \ --spring.config.additional-location=file:/appl/viglet/shio/server/viglet-shio.propertiesSuccessExitStatus=143
[Install]WantedBy=multi-user.targetEnable and start the service:
systemctl daemon-reloadsystemctl enable shio.servicesystemctl start shio.serviceOther useful commands:
systemctl stop shio.servicesystemctl restart shio.servicesystemctl status shio.serviceAccessing the Shio Console
Section titled “Accessing the Shio Console”Shio provides remote access through its Web application interfaces at: http://localhost:2710.
The administrator user is admin. Viglet Shio ships no default password: the admin
user is created without one, so there is no shipped credential to change or to forget to change.
You choose the password on first access, in one of two ways:
- The first-access screen. Open the console and Shio asks you to set the
adminpassword before anything else. This is the right path for an installation someone is sitting in front of. SHIO_ADMIN_PASSWORD. Set it before the first start and Shio applies it for you, skipping the screen. This is the path for a container, a Compose file or an automated deploy: see Setting the admin password without the console.
Setting the admin password without the console
Section titled “Setting the admin password without the console”Set SHIO_ADMIN_PASSWORD (or the equivalent property shio.admin.password) and Shio applies it
to the admin user at startup:
docker run -p 2710:2710 -e SHIO_ADMIN_PASSWORD=change-me-please ghcr.io/openviglet/shio-ce:latestjava -Xmx1g -Xms1g -jar viglet-shio.jar --shio.admin.password=change-me-pleaseThree properties make it safe to leave in a Compose file or a systemd unit permanently:
- It never overwrites a password that is already set. A restart is a no-op, and a password an administrator changed in the console is not reverted by their next deployment.
- It never prevents startup. Unset, blank, or shorter than the six-character minimum is a log line and nothing more: a typo in an environment variable does not become an outage.
- It is stored encoded, so the value in your Compose file is not sitting in the database in clear text.
If the variable is ignored, the reason is in the startup log: either a password was already configured, or the value was under six characters.
Appendix A: Installation Modes
Section titled “Appendix A: Installation Modes”Simple
Section titled “Simple”Minimal setup using an embedded H2 database. Suitable for local development and evaluation only, not for production.
Prerequisites:
- Linux server
- Java 21
- 50 GB HDD
- 2 GB RAM
Target Audience: Development and testing environments.
Docker Compose
Section titled “Docker Compose”Shio and its dependencies installed via Docker Compose, including:
- MariaDB: Shio system tables
- Nginx: reverse proxy on port 80
- Shio
Prerequisites:
- Linux server with Docker and Docker Compose installed
- 50 GB HDD
- 4 GB RAM
Target Audience: Teams that want a complete environment without manual service installation. Suitable for QA and production.
Kubernetes
Section titled “Kubernetes”Shio and its dependencies deployed via Kubernetes manifests (available in the k8s/ directory), including:
- MariaDB: Shio system tables
- Nginx: reverse proxy
- Shio
Prerequisites:
- Linux server with Kubernetes, or a cloud Kubernetes service (GKE, EKS, AKS)
- 100 GB storage
- 4 GB RAM
Target Audience: Cloud deployments requiring horizontal scaling and infrastructure-as-code.
Manual Installation
Section titled “Manual Installation”Each service installed individually following this guide:
- MariaDB: Shio system tables
- Shio
Prerequisites:
- One to two Linux servers
- 50–100 GB storage per server
- Minimum 2 GB RAM per server
Appendix B: Docker Compose
Section titled “Appendix B: Docker Compose”You can start Shio using MariaDB and Nginx.
mvn clean package -pl shio-appdocker-compose upDocker Commands
Section titled “Docker Commands”docker exec -it shio /bin/bashMariaDB
Section titled “MariaDB”docker exec -it shio-mariadb /bin/bashdocker exec -it shio-nginx /bin/bash