Installation
Server deployment and software installation guide.
System Requirements
Server Requirements
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8+ cores |
| RAM | 8 GB | 16+ GB |
| Storage | 50 GB | 100+ GB SSD |
| OS | Windows Server 2019+ or Linux | Ubuntu 22.04+ or Windows Server 2022 |
Software Prerequisites
The following software must be installed before proceeding:
| Software | Version | Purpose |
|---|---|---|
| Go | 1.24+ | Backend API server |
| PostgreSQL | 15+ | Primary database |
| Valkey or Redis | 7+ | Session storage and caching |
| Node.js | 18+ | Frontend build toolchain |
| npm | 9+ | Frontend package management |
Optional Software
| Software | Purpose |
|---|---|
| Air | Hot reload for Go during development (go install github.com/air-verse/air@latest) |
| Mailpit | Local email testing server for development |
| Caddy or Nginx | Reverse proxy for production |
Network Requirements
- HTTPS certificate (required for production)
- Firewall rules for web (443) and database (5432) ports
- DNS configuration for your institution's domain
Backend Installation
Installation Steps
Clone or extract the application
bashcd /opt/sis git clone <repository-url> .Install Go dependencies
bashcd sis_backendgo go mod downloadConfigure environment
- Create
.envfile insis_backendgo/ - Edit settings (see Environment Variables)
- Create
Set up Valkey/Redis
Valkey (or Redis) is required for session management. Install and start the service:
bash# Ubuntu/Debian (Valkey) sudo apt install valkey-server sudo systemctl enable valkey-server sudo systemctl start valkey-server # Or using Redis sudo apt install redis-server sudo systemctl enable redis-server sudo systemctl start redis-serverOn Windows, use the official Redis/Valkey installer or run via Docker:
bashdocker run -d --name valkey -p 6379:6379 valkey/valkey:latestInitialize the database
- Create the PostgreSQL database and run migration scripts
- See Database Configuration for detailed instructions
Build the application
bashcd sis_backendgo go build -o api ./cmd/api/main.goTest the installation
bash./api # Check http://localhost:8000/health
Frontend Installation
Installation Steps
Navigate to the frontend directory
bashcd sis_frontendInstall dependencies
bashnpm installBuild for production
bashnpm run buildDeploy build files
- Copy
dist/contents to your web server - Configure your reverse proxy (Nginx, Caddy, or Apache)
- Copy
Web Server Configuration
Nginx Example
nginx
server {
listen 443 ssl;
server_name sis.youruniversity.edu;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# Frontend
location / {
root /var/www/sis/dist;
try_files $uri $uri/ /index.html;
}
# API proxy
location /api/ {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Photo uploads
location /photos/ {
alias /opt/sis/sis_backendgo/photos/;
}
}Caddy Example
sis.youruniversity.edu {
handle /api/* {
reverse_proxy localhost:8000
}
handle /photos/* {
file_server
root * /opt/sis/sis_backendgo
}
handle {
root * /var/www/sis/dist
try_files {path} /index.html
file_server
}
}Running as a Service
Linux (systemd)
Create /etc/systemd/system/sis-api.service:
ini
[Unit]
Description=SIS API Server
After=network.target postgresql.service valkey-server.service
[Service]
Type=simple
User=sis
WorkingDirectory=/opt/sis/sis_backendgo
ExecStart=/opt/sis/sis_backendgo/api
Restart=always
EnvironmentFile=/opt/sis/sis_backendgo/.env
[Install]
WantedBy=multi-user.targetEnable and start:
bash
systemctl enable sis-api
systemctl start sis-apiWindows Service
Use NSSM or similar to run the Go binary as a Windows service.
Verification
After installation, verify each component:
- Valkey/Redis - Confirm the session store is running:
valkey-cli ping(should returnPONG) - PostgreSQL - Confirm the database is accessible:
pg_isready -h localhost -p 5432 - Backend API - Check the health endpoint:
GET http://localhost:8000/health - Frontend - Access the application URL and confirm the login page loads
- Login - Log in with admin credentials and verify all sections load correctly