User:Vitrinekast/The ongoing headache of getting an 2012 Macbook Pro to work as a webserver: Difference between revisions

From XPUB & Lens-Based wiki
(Created page with "This document follows the process of me trying to figure out how to set up a web server on various devices. Please note that this was really not a seamless experience, and every step of the way is just me trying things (over and over again). It’s more written like an ongoing conversation with myself to keep track of things. <span id="things-needed-from-a-web-server"></span> === Things needed from a web server === Check out this explanation, altho it uses apache2 inst...")
 
No edit summary
 
Line 1: Line 1:
This document follows the process of me trying to figure out how to set up a web server on various devices. Please note that this was really not a seamless experience, and every step of the way is just me trying things (over and over again). It’s more written like an ongoing conversation with myself to keep track of things.
This document follows the process of me trying to figure out how to set up a web server on various devices. Please note that this was really not a seamless experience, and every step of the way is just me trying things (over and over again). It’s more written like an ongoing conversation with myself to keep track of things.


<span id="things-needed-from-a-web-server"></span>
<span id="debian"></span>
=== Things needed from a web server ===
== Debian ==


Check out this explanation, altho it uses apache2 instead of nginx [https://medium.com/geekculture/how-to-host-your-website-on-an-old-mac-mini-with-ssl-4f7c8125cc8c How to host your website on an old Mac mini with SSL | by Roland Treiber | Geek Culture | Medium]
I’ve by now installed Debian 12, and need to install a package without internet. i’ve put it on a usb stick
 
# SSH into it
# SSh from a different location
# ftp access?
# uploading files to a web directory
# being able to reach those files
# PHP enabled
# DNS
# Mail
# Do not shut down when lid is closed
 
i’ve by now installed debian 12, and need to install a package without internet. i’ve put it on a usb stick


# to mount the usb stick to the mac
# to mount the usb stick to the mac
Line 32: Line 20:


<pre>su -</pre>
<pre>su -</pre>
but it depends on wget so i cant install it as i have no internet :(
The package now installs, but it depends on wget, which is another package. So lets try to get internet by '''downloading the [http://ftp.nl.debian.org/debian/pool/main/n/network-manager/ networkmanager]'''


so lets try to get internet by downloading the [http://ftp.nl.debian.org/debian/pool/main/n/network-manager/ networkmanager]
which needed many many dependencies, dependant on dependencies…


which needed many many dependencies dependant on dependencies…
oh, but apparently networkManager is already installed? After I ran <code>systemctl status NetworkManager</code> it showed as inactive, so i restarted it using <code>restart</code>.
 
oh, but apperantly networkManager is already installed? After I ran <code>systemctl status NetworkManager</code> it showed as inactive, so i restarted it using <code>restart</code>.


<pre>systemctl enable NetworkManager</pre>
<pre>systemctl enable NetworkManager</pre>
im now installing <code>zlibnm0_1.46.0-1_amd64.deb</code>, which is needed to run nmcli?
im now installing <code>zlibnm0_1.46.0-1_amd64.deb</code>, which is needed to run nmcli (NetworkManager_?


so, that helped. now i can see that the wifi is on but when running <code>nmcli dev wifi list</code> its still not showing any wifi spots according to the internet i need to <code>sudo systemctl start wpa_supplicant.service</code>. but ofcourse, wpa_supplicant.service is not found…
so, that helped. now i can see that the wifi is on. but when running <code>nmcli dev wifi list</code> its still not showing any wifi spots. according to the internet i need to <code>sudo systemctl start wpa_supplicant.service</code>. but ofcourse, wpa_supplicant.service is not found…


this is getting so chaotic
This documentation is getting so chaotic


installed [https://packages.debian.org/sid/amd64/wireless-tools/download wireless tools]
New day, new option: installed [https://packages.debian.org/sid/amd64/wireless-tools/download wireless tools]


<pre>iwlist wlan0 scan</pre>
<pre>iwlist wlan0 scan</pre>
but this doesn’t support scanning..
but this wireless chip doesn’t support scanning..?


And then I accidentally deleted the <code>/usr</code> folder, which broke the entire system. I couldn’t even <code>ls</code> anymore!
And then I accidentally deleted the <code>/usr</code> folder, which broke the entire system. I couldn’t even <code>ls</code> anymore! Time to call it a day.


Michael left a usb stick on the laptop with a new installation of debian 12. I’ve installed this one on the macbook, but keep running in the same issues. By now, I have gotten fast in mounting and unmounting USB sticks and manually downloading packages (that need packages and packages and packages).
Michael left a usb stick on the laptop with a new installation of Debian 12. I’ve installed this one on the macbook, but keep running in the same issues. By now, I have gotten fast in mounting and unmounting USB sticks and manually downloading packages (that need packages and packages and packages).


Apparently I’m in need of specific non-free (free as in libre?) frameworks for the wifi card to work, but these honestly needed so many dependencies that needed to be manually downloaded one by one, that I gave up and went home.
Apparently I’m in need of specific non-free (free as in libre?) frameworks for the wifi card to work, but these honestly needed so many dependencies that needed to be manually downloaded one by one, that I gave up and went home.
Line 60: Line 46:
Not the most seamless experience, and especially not the most empowering one (so far).
Not the most seamless experience, and especially not the most empowering one (so far).


!!!! Reverted so many things, installed Ubuntu server via the USB→ ethernet dongle of Michael, and now there is a server that can be ssh’d into! some things
<span id="ubuntu-server"></span>
== Ubuntu Server ==


* ☐ the ip address keeps changing. how to make this stay the same?
Reverted so many things, installed Ubuntu server via the USB→ ethernet dongle of Michael, and now there is a server that can be ssh’d into! Ubuntu is supposed to be a bit more friendly out-of-the-box, so hopefully that will help me out. Time to finally get working on setting up the rest of the server, in more managable smaller steps: ### Things needed from a web server
* how to get wifi with eduroam to work?
 
* ☐ the ip address keeps changing. how to make this stay the same? ATM it stays the same, to look into what to do if you’ve lost the ip address..
* how to get wifi with eduroam to work?
** ☐ Fix this warning: Permissions for /etc/netplan/50-cloud-init.yaml are too open. Netplan configuration should NOT be accessible by others.
** ☐ Fix this warning: Permissions for /etc/netplan/50-cloud-init.yaml are too open. Netplan configuration should NOT be accessible by others.
* ☐ Set the correct timezone
* ☐ Set the correct timezone
* resize terminal text size
* resize terminal text size
* ☐ webserver
* ☒ Changing the font-size of the macbooks display
* ☐ SSH from a different location
* ☐ Git intergration?
* ☐ 404 pages
* ☐ FTP access
* ☐ being able to upload files
* ☐ Mail
* ☐ Do not shut down when lid is closed - research other ways of lowering power consumption and extending shelf life.
* ☐ ehh how does DNS work?
* ☐ Think about if you’d want to self host gittea.
* ☐ change password to something more secure


<span id="how-do-i-get-the-wifi-of-eduroam-to-work"></span>
<span id="how-do-i-get-the-wifi-of-eduroam-to-work"></span>
Line 139: Line 140:
then you shouldn’t unplug the usb ethernet thing and expect it to work right away (s.o.) but rather <code>sudo nmcli c up eduroam --ask</code> and fill in the eduroam login details there.
then you shouldn’t unplug the usb ethernet thing and expect it to work right away (s.o.) but rather <code>sudo nmcli c up eduroam --ask</code> and fill in the eduroam login details there.


But, the wifi SSD apparently is incorrect?
But, the wifi SSD apparently is incorrect? Let’s retrace some steps and try again.
 
I used a new netplan config:
 
<syntaxhighlight lang="yaml"># This is the network config written by 'subiquity'
 
network:
  ethernets:
    enx00249c032885:
      dhcp4: true
  version: 2
  wifis:
    wlp3s0:
      dhcp4: yes
      dhcp6: yes
      access-points:
        "eduroam":
          auth:
            password: "<mypassword>"
            key-management: "eap"
            method: "peap"
            phase2-auth: "MSCHAPV2"
            anonymous-identity: "@hr.nl"
            identity: "1032713@hr.nl"
        "Schuurneus Iphone":
          password: "p1111111"
</syntaxhighlight>
And then
 
<pre>netplan apply
iwconfig
and ip add
and ping google.com</pre>
To verify that i now have a working wifi connection! IP: 145.137.15.162
 
<span id="changing-the-font-size"></span>
=== Changing the font size ===
 
The answer was to edit the file <code>/etc/default/console-setup</code> and enter:
 
<pre>FONTFACE=&quot;Terminus&quot;
FONTSIZE=&quot;16x32&quot;</pre>
then:
 
<syntaxhighlight lang="bash">sudo update-initramfs -u
sudo reboot</syntaxhighlight>
OR (but the above already worked) using the <code>setfont</code> package
 
See the list of console fonts at <code>ls /usr/share/consolefonts</code> You might need to install them using the package <code>fonts-ubuntu-font-family-console.</code> You can change it system-wide instead of putting it in your <code>.profile</code> with <code>dpkg-reconfigure console-setup</code>
 
<span id="creating-a-web-server"></span>
== Creating a web server ==
 
installing nginx
 
<pre>sudo apt update
sudo apt install nginx</pre>
Testing the web server by going to 145.137.15.162 which shows the nginx welcome page!
 
<code>systemctl status nginx</code>
 
The webserver serves /var/www/html and its contents

Latest revision as of 11:09, 12 March 2024

This document follows the process of me trying to figure out how to set up a web server on various devices. Please note that this was really not a seamless experience, and every step of the way is just me trying things (over and over again). It’s more written like an ongoing conversation with myself to keep track of things.

Debian

I’ve by now installed Debian 12, and need to install a package without internet. i’ve put it on a usb stick

  1. to mount the usb stick to the mac
    1. lsblk to list all devices
    2. mkdir /media/usb-drive
    3. mount /dev/{name} /media/usb-drive/
  2. now we need to run the deb file using dpkg
    1. dpkg -i {package}.deb dont forget to sudo umount /media/usb

but now i get

dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.

so i did

su -

The package now installs, but it depends on wget, which is another package. So lets try to get internet by downloading the networkmanager

which needed many many dependencies, dependant on dependencies…

oh, but apparently networkManager is already installed? After I ran systemctl status NetworkManager it showed as inactive, so i restarted it using restart.

systemctl enable NetworkManager

im now installing zlibnm0_1.46.0-1_amd64.deb, which is needed to run nmcli (NetworkManager_?

so, that helped. now i can see that the wifi is on. but when running nmcli dev wifi list its still not showing any wifi spots. according to the internet i need to sudo systemctl start wpa_supplicant.service. but ofcourse, wpa_supplicant.service is not found…

This documentation is getting so chaotic

New day, new option: installed wireless tools

iwlist wlan0 scan

but this wireless chip doesn’t support scanning..?

And then I accidentally deleted the /usr folder, which broke the entire system. I couldn’t even ls anymore! Time to call it a day.

Michael left a usb stick on the laptop with a new installation of Debian 12. I’ve installed this one on the macbook, but keep running in the same issues. By now, I have gotten fast in mounting and unmounting USB sticks and manually downloading packages (that need packages and packages and packages).

Apparently I’m in need of specific non-free (free as in libre?) frameworks for the wifi card to work, but these honestly needed so many dependencies that needed to be manually downloaded one by one, that I gave up and went home.

Not the most seamless experience, and especially not the most empowering one (so far).

Ubuntu Server

Reverted so many things, installed Ubuntu server via the USB→ ethernet dongle of Michael, and now there is a server that can be ssh’d into! Ubuntu is supposed to be a bit more friendly out-of-the-box, so hopefully that will help me out. Time to finally get working on setting up the rest of the server, in more managable smaller steps: ### Things needed from a web server

  • ☐ the ip address keeps changing. how to make this stay the same? ATM it stays the same, to look into what to do if you’ve lost the ip address..
  • ☒ how to get wifi with eduroam to work?
    • ☐ Fix this warning: Permissions for /etc/netplan/50-cloud-init.yaml are too open. Netplan configuration should NOT be accessible by others.
  • ☐ Set the correct timezone
  • ☒ resize terminal text size
  • ☐ webserver
  • ☒ Changing the font-size of the macbooks display
  • ☐ SSH from a different location
  • ☐ Git intergration?
  • ☐ 404 pages
  • ☐ FTP access
  • ☐ being able to upload files
  • ☐ Mail
  • ☐ Do not shut down when lid is closed - research other ways of lowering power consumption and extending shelf life.
  • ☐ ehh how does DNS work?
  • ☐ Think about if you’d want to self host gittea.
  • ☐ change password to something more secure

How do i get the wifi of eduroam to work?

according to this gist, i need to create /etc/netplan/50-cloud-init.yaml. with the following setup

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true

    wifis:
        wlan0:
            dhcp4: true
            access-points:
                "eduroam":
                    auth:
                      key-management: eap
                      password: "your password"
                      method: ttls
                      identity: "number@hr.nl"
                      phase2-auth: "MSCHAPV2"
    version: 2
    

and then run sudo netplan --debug apply to apply the setup. the debug does show this warning, so i need to do something about it:

** (process:1657): **WARNING** **: 12:17:05.453: Permissions for /etc/netplan/50-cloud-init.yaml are too open. Netplan configuration should NOT be accessible by others.

according to the logs, wpa_supplicant is created. but then: `A dependency job for netplan-wpa-wlan0.service failed. See 'journalctl -xe' for details.` and the apply is failed..

journalctl -xe returns

Mar 06 12:18:35 vitrinekast systemd[1]: **sys-subsystem-net-devices-wlan0.device: Job sys-subsystem-net-devices-wlan0.device/start timed out.**

Mar 06 12:18:35 vitrinekast systemd[1]: **Timed out waiting for device /sys/subsystem/net/devices/wlan0.**

Did some searching, and removed this whole thing to try something else

installed NetworkManager to be able to run nmcli d. It is so much better to do this with an internet connection!

**rosa@vitrinekast**:**~**$ nmcli d

DEVICE           TYPE      STATE         CONNECTION 

wlp3s0           wifi      disconnected  --         
enx00249c032885  ethernet  unmanaged     --         
lo               loopback  unmanaged     --         

**rosa@vitrinekast**:**~**$

then I turn the wifi on by nmcli r wifi on. listing the available networks by running nmcli d wifi list returns loads of Tesla wifi networks! But also some eduroam.

nmcli d wifi connect my_wifi password <password>

gives Error: Failed to add/activate new connection: Failed to determine AP security information

According to stack exchange i need to

nmcli connection add \
 type wifi con-name "MySSID" ifname wlp3s0 ssid "MySSID" -- \
 wifi-sec.key-mgmt wpa-eap 802-1x.eap ttls \
 802-1x.phase2-auth mschapv2 802-1x.identity "USERNAME" 

Turns into

sudo nmcli connection add \
 type wifi con-name eduroam ifname wlp3s0 ssid eduroam -- \
 wifi-sec.key-mgmt wpa-eap 802-1x.eap ttls \
 802-1x.phase2-auth mschapv2 802-1x.identity 1032713@hr.nl

then you shouldn’t unplug the usb ethernet thing and expect it to work right away (s.o.) but rather sudo nmcli c up eduroam --ask and fill in the eduroam login details there.

But, the wifi SSD apparently is incorrect? Let’s retrace some steps and try again.

I used a new netplan config:

# This is the network config written by 'subiquity'

network:
  ethernets:
    enx00249c032885:
      dhcp4: true
  version: 2
  wifis:
    wlp3s0:
      dhcp4: yes
      dhcp6: yes
      access-points:
        "eduroam":
          auth:
            password: "<mypassword>"
            key-management: "eap"
            method: "peap"
            phase2-auth: "MSCHAPV2"
            anonymous-identity: "@hr.nl"
            identity: "1032713@hr.nl"
        "Schuurneus Iphone":
          password: "p1111111"

And then

netplan apply
iwconfig
and ip add
and ping google.com

To verify that i now have a working wifi connection! IP: 145.137.15.162

Changing the font size

The answer was to edit the file /etc/default/console-setup and enter:

FONTFACE="Terminus"
FONTSIZE="16x32"

then:

sudo update-initramfs -u
sudo reboot

OR (but the above already worked) using the setfont package

See the list of console fonts at ls /usr/share/consolefonts You might need to install them using the package fonts-ubuntu-font-family-console. You can change it system-wide instead of putting it in your .profile with dpkg-reconfigure console-setup

Creating a web server

installing nginx

sudo apt update
sudo apt install nginx

Testing the web server by going to 145.137.15.162 which shows the nginx welcome page!

systemctl status nginx

The webserver serves /var/www/html and its contents