freeBSD basics

#freebsd #nginx #php #dokuwiki I made a few updates … all very basic. Next, I will do my version of the FEMP stack and FAMP stack for freeBSD. For now, this consolidates like ten web pages, i.e, multiple real people doing this same thing, into a condensed reminder set for me. I share them with you at a take it or leave it level. It is too basic for some and too advanced for others. This update includes these topics: basic setup of host, FEMP/FAMP (forthcoming and/or ongoing), dokuwiki (complete), sudo on freeBSD (complete), GUI on freeBSD (complete), permissions . There is more coming – enjoy. (Disclaimer – I run Debian now full time both for philosophical and practical reasons.)

After installation, run:


With no internet, you must build from source (if you even still want it):

cd /usr/ports/ports-mgmt/pkg
make install
make clean

Update ports after you have internet:

portsnap fetch
portsnap extract

As of 10.X > freeBSD will automatically allow the native pkg manager to install ports. This allows the user to avoid compiling from source and navigating to directories. Therefore, there is now a reason to build pkg from source – it will do this work for you more effectively. (So what? You can now search ports and geek out, and then use those names with pkg and sit back while it does the work!)

pkg install

And of course installing pkg from source is but one example of the whole ports system, which is a set of binaries ready to compile. They are sorted by intuitive names in the directory below, and it is wise to look around and then switch back to pkg, or if you know what you are doing, build from source as follows:

cd /usr/ports/
permissionsmake install
make clean

freeBSD has other port managers besides portsnap

pkg install portmaster
pkg install portupgrade

You can set up a DE by installing nano, xorg, & mate-desktop, xfce, gnome3, kde, etc., and an appropriate window manager and window server. I choose gnome3 on bigger machines and xfce on smaller, but everyone has their preference. For servers, I leave it off. I always use xorg and slim for xfce, and gnome has its own when using that. Anyway, here goes:

pkg install mate mate-desktop [or]
pkg install gnome3 [or]
pkg install xfce [or]
pkg install xorg
pkg install slim

Add the following like below the last device (/dev):

nano /etc/fstab
proc /proc procfs rw 0 0

Then, edit your rc.conf file:

mate_enable=”YES” [or]
xfce_enable=”YES” [or]
gnome3_enable=”YES” [or]

Add .xinitrc to ~ and /root, enter the syntax listed below the nano commands.

nano /root/.xinitrc
exec start gnome3
nano /home/username/.xinitrc
exec start gnome3

Now, fine tune your user settings for your regular user. Edit /etc/group

su – root
cd /etc
nano group

Once inside the editor nano, please edit the operator and wheel lines as follows:

operator::5:root, wheel::0:root,

Or, edit the group file directly from the command line:

pw group mod -m

Or, alternately, you can install sudo (recommended):

pkg install sudo
nano /usr/local/etc/sudoers

In that file that you just opened called sudoers, there is a line that reads “root ALL=(ALL) ALL.” You want to create a line directly underneath that similar to this:

username ALL=(ALL) ALL

Close and save the file and reboot:


Basic updating:

freebsd-update fetch
freebsd-update install

To upgrade to a new major release:

freebsd-update -r 9.1-RELEASE upgrade
freebsd-update install

After either updating or installing a new release:

shutdown -r now

After restarting, run the update again to remove old shared libraries and objects

freebsd-update install

— FEMP Stack on BSD —

— Dokuwiki on BSD–

Setting up dokuwiki on freeBSD and securing data directory (required on BSD). (Only making BSD specific permission changes at present.)

su – root
cd /usr/ports/www/dokuwiki
make install clean
mv /usr/local/www/dokuwiki /usr/local/www/nginx/dokuwiki
sudo chmod -R 755 /usr/local/www/nginx/dokuwiki/conf
sudo chown -R www /usr/local/www/nginx/dokuwiki/conf
sudo chown www /usr/local/www/nginx/dokuwiki/data
sudo chmod -R 775 /usr/local/www/nginx/dokuwiki/data
sudo chmod -R 755 /usr/local/www/nginx/dokuwiki/lib
sudo chown -R www /usr/local/www/nginx/dokuwiki/lib

Now, go to and run the installer. Now, it is time to move the data directory and to configure dokuwiki’s main .php configuration file to “see” that move.

mv /usr/local/www/nginx/dokuwiki/data /usr/local/www/data
cd /usr/local/www/nginx/dokuwiki/conf/
nano local.php

Ok, inside the .php main configuration file for dokuwiki that you just opened, add the following line below that others that specify other global parameters.

$conf[‘savedir’] = ‘/usr/local/www/data/’;

When you moved the data directory it likely lost its permissions from the above changes. If not, or if you are unsure, execute:

sudo chmod -R 775 /usr/local/www/data
sudo chown www -R /usr/local/www/data

Remove the original data directory and restore root as owner of the main configuration directory.

sudo rm -r /usr/local/www/nginx/dokuwiki/data
sudo chown -R root /usr/local/www/nginx/dokuwiki/conf

Reload the primary page, make a test submission. Also, log in and select Admin and you should see the security warning removed now. At this point, follow these standard permission recommendations from dokuwiki. (The user is www for nginx, not www-data, and the group is wheel, but do not specify the group.):

chmod g+rwx /usr/local/www/nginx/dokuwiki
chmod -R 775 /usr/local/www/data
chown -R www /usr/local/www/data
chmod -R 2775 /usr/local/www/data/attic /usr/local/www/data/cache /usr/local/www/data/index /usr/local/www/data/locks /usr/local/www/data/media /usr/local/www/data/meta /usr/local/www/data/pages /usr/local/www/data/tmp
chown -R www /usr/local/www/data/attic /usr/local/www/data/cache /usr/local/www/data/index /usr/local/www/data/locks /usr/local/www/data/media /usr/local/www/data/meta /usr/local/www/data/pages /usr/local/www/data/tmp

Probably a good idea to restart php, nginx.

service nginx restart
service php-fpm restart

Leave a Reply

Your email address will not be published. Required fields are marked *

JavaScript licenses