Zeta - CIF-Rochester/wiki GitHub Wiki

Zeta is presently our Primary Web Server. The Website it hosts replaced the old CIF website, hosted on Omega, On January 28th, 2026 at 4:05 AM.

Originally, Zeta was set up on Ubuntu Server 24.04 LTS, but was eventually merged over to Debian for ease of administration, amongst other factors.

Hardware

Component Specs
System OptiPlex 7060
CPU Intel i7-8700
Cores/Threads 6/12
RAM 1x16GiB DDR4
Storage 160Gb HDD
IPs ###.###.220.40
GPU Integrated
OS Debian 13.

Usage and day-to-day operation.

The hope is very much to make Zeta as easy to administer as possible, and, hopefully, not need too many interventions on the OS side of things, outside of the regular update, which is handled by Dos5, our autoupdater. Please make sure the website works somewhat regularly. Pretty much all public facing updates to the website are done via wordpress, which is exceedingly well documented.

Adding Minutes to the website.

The way minutes were imported to Omega, and thereby stored on it, was deemed to be unsatisfactory, if just for the reason of exporting the documents for the purpose of record keeping. Only the Minutes from 2009 - 2018 were stored in a fashion that could be automatically extracted through scripts, whilst the rest had to be manually turned into HTML files via inspecting the page source of various pages on Omega.

So, a new method for uploading Minutes was devised for Zeta! This is located at https://cif.rochester.edu/minutes . This system works by reading the file structure of a specific directory (including its sub-directories), so as to contain the documents contained inside. It's pretty nifty, and all you need to do to extend onto it is add new folders and files! It accepts html files and pdf documents, both of which can be displayed in all modern web browsers.
Presently, this directory's structure can be seen as following the template listed below: ''' Type of Meeting --> Year --> Semester --> File with date as the name.
'''

Certs

https://cif.rochester.edu , Our main website, is basically the only one to which we get certificates for at this point in time. Much has changed in the way of how we acquire certificates since when Omega or Web1 was set up, so the information contained in Updating SSL Certificates can be considered obsolete. As far as I'm aware, the recommended method for acquiring new certificates is for us to acquire them via Let's Encrypt's Certbot.
If you have to update the main website's certs, run the following command:

sudo certbot renew --force-renew -d cif.rochester.edu -v

As mentioned with Omega, you can run the following command to see when your cert will expire.

openssl x509 -enddate -noout -in /etc/letsencrypt/live/cif.rochester.edu/cert.pem

Migration

A lot of information was ported to Zeta from Omega, Which in turn was port of Web1. In addition to this, the entirety of the wordpress instance was moved from Ubuntu 24.04 lts to Debian 13 Trixie. Much of the below information concerns this transfer. Should you ever have to complete this again, I am sorry.

Before we start...

For the sake of argument, I will presume that you are transferring from an Ubuntu server to a Debian Server. Things are mostly the same across these releases, but weird small things have been known to vary. If you are transferring to or from another release, be weary of versions! It should be possible to transfer between things, but Apache can look VERY different dependent on the Linux Distro.

Before we get into transferring the Wordpress instance from one computer to another, we first have to back up the instance which exists on the old computer, and transfer some files.

Make a .sql file from the wordpress database that was generated on install.

# mysqldump -u root -o wordpress > dump.sql

Copy this file to the Debian Box that you've installed to a known directory. For the sake of argument, I am going to use /copy.

Copy the entirety of the /srv/www/wordpress directory to the Debian Box.
This can be done with scp, rsync, a usb stick, or just a cable.

Copy the /etc/apache2/sites-enabled/wordpress.conf file to the Debian Box.

These should be all the files you need. We should have /copy/wordpress /copy/dump.sql and /copy/wordpress.conf.

Installation.

For the sake of ease, I will presume that you have a computer with a fresh install of Debian 13.

Install wordpress, apache2, and an SQL server on the Debian box.

# apt install wordpress curl apache2 mariadb-server

First things first, we need to get rid of the Wordpress database that exists on Debian that was created when you installed Wordpress.

# mysql -u root -p

From here, make sure there is a database called "wordpress"

SHOW DATABASES;

If there is, Delete it.

DROP DATABASE wordpress;

Run the following commands in SQL to create a new wordpress database, a new wordpress user, and a new wordpress user password. Please, replace the password, user, and databse with what is listed in /copy/wordpress/wp-config.php.

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Import the database from the old server to the new one.

# mysql -u wordpress_user -p wordpress_db < /home/user/wordpress-db-backup.sql

Copy /copy/wordpress to the proper directory

# mkdir /srv/www/
# chmod 777 /srv/www
# cp -r /copy/wordpress/ /srv/www/

Remove the existing Apache configuration file.

# rm /etc/apache2/sites-available/wordpress.conf

Copy in the new apache configuration file.

# cp /copy/wordpress.conf /etc/apache2/sites-available/wordpress.conf

Change some random things here and there in /srv/www/wordpress/wp-config.php, change the line that defines "DB_HOST to be the following:

define( 'DB_HOST', 'localhost:/run/mysqld/mysqld.sock' );

Debian and Ubuntu are slghtly different, so we have to merge some things.

I believe there is also a module you have to enable, though I'm not actually sure which one. Should you be the poor soul who has to do this, and you get this far, Apache will tell you.
I think it is mod_rewrite, though?

# a2enmod rewrite
# systemctl restart apache2

It is also worth mentioning that you will probably want to enable requests from places that are not localhost (i.e, accepting requests from everywhere!) To do this, edit /etc/apache2/ports.conf

# nano /etc/apache2/ports.conf

and make it look like this:

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

If you want to enable SSL, you will need to also declare that Apache needs to listen to port 443.

Deploying Zeta as the main web server.

From my understanding, wordpress is very dependent on the original internal name of the computer. (We made this mistake one night when we were testing it). You can change this by way of SQL, or (I think) by way of the wp-config.php file. by pasting the following into that file, somewhere by the define statements.

define('WP_HOME',    'http://zeta.cif.rochester.edu');
define('WP_SITEURL','http://zeta.cif.rochester.edu');

Additionally, there are some permalinks that depend on the previous name. If you edit the PHP file, or SQL database, you should be able to get into the WebUI to change these with the click of a button. If this is not possible, WP-CLI is a helpful resource.

There are some other weird shenanigans here and there. This entire page was written from memory, so I'm sorry if things are a bit shaky. If you need any support, it is a very well-documented thing. CIF has done it at least once before with the switch from Web1 to Omega, but unfortunately that information was lost to time.

⚠️ **GitHub.com Fallback** ⚠️