Everything you need to get Ticket Foundry up and running. No web development experience required — just a hosting account and about 20 minutes.
What You'll Need
| Web Hosting | Any server running PHP 8.1+ and MySQL 5.7+ or MariaDB 10.3+. Works on shared hosting (Dreamhost, Bluehost, SiteGround), VPS, or self-hosted Windows/Linux servers. |
| Domain / Subdomain | Where Ticket Foundry will live — e.g., helpdesk.yourcompany.com. A subdomain is recommended to keep it separate from your main site. |
| FTP / File Manager | To upload files to your server. FileZilla is a free FTP client. Most control panels also include a web-based file manager. |
| Email Provider | Optional but recommended. Free accounts with Postmark, Mailgun, SendGrid, or Brevo work out of the box. SMTP also supported. |
PHP Requirements
Required PHP extensions — the setup wizard checks these automatically:
pdo_mysql | Database connectivity — required |
mbstring | Multi-byte string handling — required |
openssl | Credential encryption — required |
curl | Email API providers (Postmark, Mailgun etc.) — required if using API-based email |
fileinfo | File attachment handling — required |
json | API responses — enabled by default in PHP 8+ |
session | Login sessions — enabled by default |
Apache Requirements
mod_rewrite | URL rewriting — required. Usually enabled by default on shared hosting. |
AllowOverride All | Required for .htaccess to work. Set in your Apache virtual host config. |
.htaccess | Included in the package — handles all rewrite rules and security headers automatically. |
IIS (Windows Server) Requirements
| PHP for IIS | Use PHP Manager for IIS (free, from Microsoft) — easiest way to install PHP on Windows Server. |
| URL Rewrite Module | Free download from Microsoft. Required for clean URLs. Install before uploading files. |
web.config | Included in the package — use this instead of .htaccess on IIS. Do not upload .htaccess. |
| PHP extensions | Enable php_pdo_mysql, php_mbstring, php_openssl, php_curl, php_fileinfo in PHP Manager. |
| Application Pool | Set to No Managed Code with Integrated pipeline mode. |
Nginx Requirements
| PHP-FPM | Required — Nginx doesn't execute PHP natively. Install php8.1-fpm (or higher). |
| PHP extensions | php8.1-mysql, php8.1-mbstring, php8.1-curl, php8.1-fileinfo, php8.1-openssl |
nginx.conf.example | Included in the package — use as your server block. Handles rewrite rules and security headers. |
.htaccess | Ignored by Nginx — leave it in place, it does nothing but won't cause errors. |
Ticket Foundry needs a MySQL database to store all your tickets, users, and settings.
- Log in to your hosting control panel (cPanel, Plesk, or similar)
- Find MySQL Databases or Database Wizard
- Create a new database — name it something like
ticket_foundry - Create a database user with a strong password
- Assign the user to the database with All Privileges
- Write down the database host, name, username, and password — you'll need these in the setup wizard
localhost. Some hosts use a different value — check your hosting documentation if the default doesn't work.Upload all Ticket Foundry files to your server.
- Download the Ticket Foundry zip file and extract it on your computer
- Connect to your server via FTP/SFTP (FileZilla is a free option) or use your hosting's file manager
- Navigate to the folder for your domain or subdomain
- Upload all extracted files — including hidden files (files starting with a dot)
- Make sure the
uploads/folder exists — create it if it doesn't
.htaccess file must be uploaded — it controls URL routing. Some FTP clients hide dotfiles by default. In FileZilla: Server → Force showing hidden files.uploads/ and includes/ folders must have permissions set to 755. If file uploads don't work or you see permission errors after setup, right-click each folder in your FTP client → File Permissions → set to 755.The setup wizard imports the database schema automatically when you connect your database in Step 4. You can skip this step entirely.
▸ Manual import (fallback only — if the setup wizard reports a schema error)
- Log in to phpMyAdmin (available in most hosting control panels)
- Select your Ticket Foundry database from the left sidebar
- Click the Import tab at the top
- Click Choose File and select
schema.sqlfrom the Ticket Foundry package - Leave all settings at defaults and click Go
- You should see 19 tables created — then proceed to Step 4
Open your browser and go to your domain — you'll be automatically redirected to the setup wizard. The wizard has 6 steps:
https://support.yourcompany.com). Default theme — 10 options, changeable later. Timezone — set correctly for accurate ticket timestamps.- Create a free account at mailgun.com
- Add and verify your domain — they walk you through adding DNS records
- Copy your API key from the Mailgun dashboard
- Enter your domain and API key in the setup wizard
- Create an account at postmarkapp.com
- Create a new Server in your Postmark dashboard
- Copy the Server API Token
- Enter your API token and From address in the setup wizard
- Create a free account at sendgrid.com
- Go to Settings → API Keys, create a key with Mail Send permission
- Enter your API key in the setup wizard
- Create a free account at brevo.com
- Go to SMTP & API → API Keys and create a key
- Enter your API key in the setup wizard
Your cron key is shown in Settings → General after setup. Replace YOUR_CRON_KEY and yourdomain.com in the commands below.
How to Set Up a Cron Job
Most hosting control panels include a Cron Jobs tool — look for it under Advanced or Tools.
- Find the Cron Jobs section in your hosting control panel
- Click Add New Cron Job
- Set the frequency (daily at a specific hour, or monthly for the monthly report)
- Paste the command, replacing
yourdomain.comwith your domain andYOUR_CRON_KEYwith your key from Settings → General - Save — the job will run automatically on schedule
- Make sure all files were uploaded including hidden files (starting with a dot, like
.htaccess) - The
.htaccessfile must be present — it controls how URLs are routed - Verify your PHP version is 8.1 or higher in your hosting control panel
- Double-check all four credentials: host, database name, username, password
- The host is usually
localhostbut may differ — check your hosting docs - Make sure the database user has been assigned All Privileges
- Use Send Test Email in Settings → Email to diagnose the issue
- If using SMTP, switch to Mailgun, Postmark, SendGrid, or Brevo
- Check your spam/junk folder — first emails sometimes land there
- Confirm the
uploads/folder exists in your install directory - Set folder permissions to
755via FTP (right-click → File Permissions) - Check your host's maximum file upload size — Ticket Foundry supports up to 50MB but is limited by your server's php.ini settings
- Go to Settings → General and update the Timezone setting
- Verify cron jobs are configured — see the Cron Jobs section above
- Check that your cron key matches what's shown in Settings → General
- Confirm email is working using Send Test Email in Settings → Email
Ticket Foundry does not need to be publicly accessible on the internet. It works equally well as an internal tool on your company network — no external hosting required.
helpdesk.internal or a local IP address.Apache (Default)
The included .htaccess file handles all configuration automatically. No extra setup needed. Works on shared hosting, LAMP stacks, and Raspberry Pi with Apache installed.
IIS (Windows Server)
Use the included web.config file instead of .htaccess. You'll also need the URL Rewrite Module installed.
- Install PHP for IIS — use PHP Manager for IIS (free, from Microsoft) for the easiest setup
- Install the URL Rewrite Module — free download from iis.net
- Install MySQL (or MariaDB) and phpMyAdmin
- Copy all Ticket Foundry files to your IIS site root
- Place
web.configin the root folder — do not upload.htaccess, IIS ignores it - Configure PHP settings in
php.ini: setupload_max_filesize = 50M,post_max_size = 52M(or lower — Ticket Foundry max is configured in Settings → General, but cannot exceed the php.ini limit),display_errors = Off - Proceed with the normal setup wizard
web.config the way Apache sets them in .htaccess. Set them directly in your php.ini file instead.Nginx (Linux)
Use the included nginx.conf.example as your server block configuration. The .htaccess file is ignored by Nginx.
- Install Nginx, PHP-FPM (8.1+), MySQL or MariaDB, and phpMyAdmin
- Copy
nginx.conf.exampleto/etc/nginx/sites-available/ticketfoundry - Edit it — update
server_nameandrootto match your setup - Enable it:
sudo ln -s /etc/nginx/sites-available/ticketfoundry /etc/nginx/sites-enabled/ - Test and reload:
sudo nginx -t && sudo systemctl reload nginx - Proceed with the normal setup wizard
Raspberry Pi
A Pi 4 (2GB+) running Raspberry Pi OS with Apache or Nginx handles Ticket Foundry comfortably for small teams.
- Install the LAMP stack:
sudo apt install apache2 php8.1 mariadb-server phpmyadmin - Upload files to
/var/www/html/or a subdirectory - Set up a local DNS entry on your router so the Pi is accessible by hostname (e.g.,
helpdesk.local) - Proceed with the normal setup wizard
Internal DNS
To give your install a friendly URL on an internal network (e.g., helpdesk.internal instead of 192.168.1.100):
- Most routers — look for Local DNS, Static DNS Entries, or Custom DNS in your router admin panel
- Pi-hole — add a Local DNS Record in the Pi-hole dashboard
- Windows Server — add an A record in DNS Manager
- Hosts file (single machine) — add
192.168.1.100 helpdesk.internaltoC:\Windows\System32\drivers\etc\hosts(Windows) or/etc/hosts(Mac/Linux)
If you run into issues, please reach out with:
- A description of what you were doing when the issue occurred
- Any error messages you see — screenshots are very helpful
- Your hosting provider name and PHP version
- Email: sendhelp@ticketfoundry.net