October CMS on OpenBSD

nabbisen profile image Heddi Nabbisen ・4 min read


October is a CMS platform based on PHP Laravel framework.

I was interested in it when I got to know it has core auto updates like WordPress.
Also, I had been interested in Laravel, which I had never used and read about those by the users saying it is great.

This post is about my installing it in OpenBSD, my favorite OS :)


  • OS: OpenBSD 6.5
  • Database: MariaDB 10.0
  • Web Server: OpenBSD httpd
  • App Server: PHP 7.3
  • CMS: October 1.0.459
    • based on Laravel: 5.5
    • requires PHP 7.0 or greater

The minimum system requirements is here.

Steps of installation

#1. Database

Database type options are MySQL, PostgreSQL, SQLite3 or MS SQL Server.
I use MariaDB, a nice folk of MySQL.

Create a database and a user with such statements:

CREATE DATABASE <database> CHARACTER SET = 'utf8mb4';
GRANT ALL PRIVILEGES ON <database>.* TO <dbuser> IDENTIFIED BY '<dbpass>';

#2. Application

First, prepare "php" executable, for php-7.3 isn't available on the way:

# ln -s /usr/local/bin/php-7.3 /usr/local/bin/php

Prepare a directory:

$ mkdir <october-dir>
$ cd <october-dir>

Get the modules:

$ curl -s https://octobercms.com/api/installer | php
$ # Alternatively, if `curl` isn't available:
$ # php -r "eval('?>'.file_get_contents('https://octobercms.com/api/installer'));"

Soon, subdirectories are created:

$ ls # in <october-dir>
artisan    config     modules    server.php themes
bootstrap  index.php  plugins    storage    vendor

Let's install via command lines according to the official tutorial.

* Note: If you prefer GUI to CLI, wizard web server is available. With wzard installation, don't forget to delete both install.php and install_files/ for security reasons.

In order to install October, use Laravel's Artisan:

$ php artisan october:install

The installer will start:


 .d8888b.   .o8888b.   db  .d8888b.  d8888b. d88888b d8888b.  .d888b. 
.8P    Y8. d8P    Y8   88 .8P    Y8. 88  `8D 88'     88  `8D .8P , Y8.
88      88 8P      oooo88 88      88 88oooY' 88oooo  88oobY' 88  |  88
88      88 8b      ~~~~88 88      88 88~~~b. 88~~~~  88`8b   88  |/ 88
`8b    d8' Y8b    d8   88 `8b    d8' 88   8D 88.     88 `88. `8b | d8'
 `Y8888P'   `Y8888P'   YP  `Y8888P'  Y8888P' Y88888P 88   YD  `Y888P' 

`=========================== INSTALLATION ==========================='

Configure database:

 Database type:
  [0] MySQL
  [1] Postgres
  [2] SQLite
  [3] SQL Server

 MySQL Host [localhost]:

 MySQL Port [3306]:

 Database Name []:
 > <database>

 MySQL Login []:
 > <dbuser>

 MySQL Password []:
 > <dbpass>

Set up the admin user:

Enter a new value, or press ENTER for the default

 First Name [Admin]:

 Last Name [Person]:

 Email Address [admin@domain.tld]:

 Admin Login [admin]:

 Admin Password [admin]:

Confirm them:

 Is the information correct? (yes/no) [yes]:

Enter server url:

 Application URL []:
 > https://<fqdn>

How about advaned configuration?
I proceed in order to change the address of the backend, in a word, "administration":

 Configure advanced options? (yes/no) [no]:
 > yes

Skip it:

Enter a new value of 32 characters, or press ENTER to use the generated key

 Application key []:

Application key [] set successfully.

Edit the address of the backend:

 Backend URL [backend]:

Skip them:

 File Permission Mask [777]:

 Folder Permission Mask [777]:

 Enable Debug Mode? (yes/no) [yes]:

 Install the October.Drivers plugin? (yes/no) [no]:

 Install the Rainlab.Builder plugin? (yes/no) [no]:

Then the goal is almost there:

Migrating application and plugins...
 - Nothing to migrate.
 - Nothing to migrate.
 - Nothing to migrate.
- Nothing to update.
        ,,,.   ,@@@@@@/@@,  .oo8888o.      
    %&&%&%&/%&&%@@\@@/ /@@@88888\88888'    
    %&&%/ %&%%&&@@\ V /@@' `88\8 `/88'     
    `&%\ ` /%&'    |.|        \ '|8'       
        |o|        | |         | |         
        |.|        | |         | |         
`========= INSTALLATION COMPLETE ========='

You may want to make additional configuration by editing config/app.php or config/cms.php.

Well, verify files are writable for web user:

# # For example:
# chmod -R g+w .

Finally, thank you and so long, "php" executable:

# rm /usr/local/bin/php

#3. Web server

Edit conf:

# nvim /etc/httpd.conf


server "<fqdn>" {
        listen on $ext_addr tls port 443
        tls {
                certificate     "/etc/ssl/<fqdn>.fullchain.pem"
                key             "/etc/ssl/private/<fqdn>.key"
        log {
                access  "<fqdn>-access.log"
                error   "<fqdn>-error.log"

        root "/<october-dir>"
        directory index index.php

        location "/*.php" { 
                fastcgi socket "/run/php-fpm.sock"
        location "/*.php[/?]*" { 
                fastcgi socket "/run/php-fpm.sock"

Restart the daemon:

# rcctl restart httpd









They look cool :)

Posted on by:

nabbisen profile

Heddi Nabbisen


An ICT designer/developer and a security monk. "With a cool brain and a warm heart", I am challenging unsolved problems in our society. I use OpenBSD/Rust/etc.


Editor guide