Wear A Fedora

Recently I decided to give Fedora Linux a try, and out of my surprise, everything just works smoothly from installation to service running up. Whenever something goes wrong, there is alwaysg documentation1, how-to guides2, manuals and logs for reference. This post intends to write down some topics that I've been playing with in the last several days. Note that the version I've installed is Fedora Workstation with GNOME Desktop, so the out-of-box experience could be different with other Editions or Spins.

1. File Sharing in Fedora

1.1. WebDAV

To enable file sharing through WebDAV, go to Settings -> Sharing and Enable File Sharing. An unintuitive part here is the "File Sharing Address" provided is dav://fedora, which isn't quite helpful. The real address is http://local_ip:port, where local_ip could be found through ifconfig, and port could be found through lsof | grep http.

1.2. Samba

In order to create a Samba share, follow detailed steps of the how-to guide3, which could be summarized as:

  1. Install package samba
  2. Enable and start the smb service
  3. Allow Samba acccess from other computers
  4. Add a Samba user, or create a dedicated group for Samba share
  5. Create a dedicated directory to be shared by Samba
  6. Update SELinux context for the shared directory
  7. Modify /etc/samba/smb.conf for sharing configurations
  8. Restart the smb service for the config changes to take effect

A lot of steps are involved, but the concepts should be straightforward.

2. Remote Desktop Control

Remote Desktop access could be enabled in Fedora through Settings. As for RDP client, there is GNOME Connections4.

3. Virtualization and Containerization

GNOME Boxes5 provides GUI for virtualization, while Podman6 provides an alternative choice to Docker.

For Boxes, an interesting behavior is that if the default "Firmware" option is chosen, i.e. BIOS, then the boxed OS will have IP address from 192.168.0.0/16, with broadcast address mapped to virbr0 in local machine. In this case, we can ssh into the boxed OS through its IP address. On the other hand, If the "Firmware" is set to UEFI, then the boxed OS will have IP address from 10.0.0.0/8.

4. PostgreSQL

For PostgreSQL, follow the quick doc7 for detailed steps, which could be summarized as:

  1. Install packages postgresql-server and postgresql-contrib
  2. Enable and start the postgresql service
  3. Initialize database with postgresql-setup
  4. Create password for the postgres user
  5. (Optional) Allow PostgreSQL port access
  6. (Optional) Update SELinux contex
  7. Update /var/lib/pgsql/data/postgresql.conf to allow network connections
  8. Update /var/lib/pgsql/data/pg_hba.conf to allow access to database server

Note that when using TRAMP mode in Emacs, sometimes it could change user/group of the modifed file from postgres to current wheel user – in which case, the service restart command will fall. Whenever this happens, check the PostgreSQL log to see whether it's caused by incorrect file permission.

5. Games

5.1. VCMI

VCMI8 is the GPL licensed re-implementation of HOMM 3, yet it is only available in software center through flatpak by default. In order to install the RMP package, add the RMP Fusion9 repository first10, then install vcmi11.

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf update
sudo dnf install vcmi

After VCMI is installed, put game data into $HOME/.local/share/vcmi and have fun.

6. Misc. Configs

6.1. Passwords and Keys

Among all the GNOME applications pre-installed, Passwords and Keys is missing and requires manual installation, which is a bit confusing, since Chromium will complain if the user password has been changed through passwd without going throug the GNOME settings. And when this error happens, install Passwords and Keys and cleanse Log In data with old password.

6.2. Network: Static IP

In order to enable static IP of current machine, go to Network config and conifigure IPv4 manually by setting both IP address, Subnet mask (which is typically 255.255.255.0), and Gateway (e.g. 192.168.1.1). Also, consider to go to router config and bind the IP with machine MAC address.

Footnotes: