{"id":78,"date":"2020-01-30T02:51:36","date_gmt":"2020-01-30T01:51:36","guid":{"rendered":"https:\/\/codedoneright.eu\/?page_id=78"},"modified":"2020-07-21T18:41:43","modified_gmt":"2020-07-21T17:41:43","slug":"installing-raspbian-raspberry-pi-os-for-server-use","status":"publish","type":"page","link":"https:\/\/codedoneright.eu\/?page_id=78","title":{"rendered":"Installing Raspbian"},"content":{"rendered":"\n<p>Typical Raspberry Pi OS, called Raspbian, installation is too cumbersome for a server. You do not even need desktop environment. This part of the webstack tutorial will focus on installing a minimalistic system that can be fine-tuned to your needs. You can use either Windows or Linux. Doesn&#8217;t matter as long as you have the means of copying files to an SD card and you are able to connect on the same network both Raspberry and a computer used to administrate your server with.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Getting Raspbian<\/h4>\n\n\n\n<p>To get the stock image of Raspbian OS go to <a href=\"https:\/\/www.raspberrypi.org\/downloads\/raspbian\/\">The Raspberry Pi Foundation website<\/a> and download <em>Raspberry Pi OS (32-bit) Lite<\/em> and unzip the file. <\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Installing Raspberry Pi OS<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">Linux<\/h5>\n\n\n\n<p>The easiest way to place Raspbian on your SD card is the use of <em>dd<\/em> command, if you are doing this on Linux I assume you know how to use terminal<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo dd if=\/$path_to_raspbian_img of=\/dev\/sdX bs=4MB conv=noerror status=progress<\/code><\/pre>\n\n\n\n<ul><li><em>bs=<\/em> tells dd how big should be the write blocks, 4MB is fine<\/li><li><em>if=<\/em> this is the path to Raspbian image file<\/li><li><em>of=<\/em> this is the path to root of your SD card<\/li><li><em>conv=noerror<\/em> ignores errors<\/li><li><em>status=progress<\/em> simply shows progress<\/li><\/ul>\n\n\n\n<p><strong>Caution!<\/strong> Choosing wrong device will wipe your data, there is no prompt whatsoever! If you specify your hard drive it WILL be erased.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Finding path to SD card in Linux<\/h6>\n\n\n\n<p>Run this command <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo fdisk -l<\/code><\/pre>\n\n\n\n<p>Usually <em>\/dev\/sda<\/em> will be your main hard drive and <em>\/dev\/sdb<\/em> will be your SD card in case you have a single HDD and only the SD card plugged in.<\/p>\n\n\n\n<p>Devices follow this pattern starting with <em>\/dev\/<\/em><\/p>\n\n\n\n<ul><li>sda \u2013 first physical drive<\/li><li>sda1 \u2013 first partition of the first physical drive<\/li><li>sda2 \u2013 second partition of the first physical drive<\/li><li>sdb \u2013 second physical drive<\/li><li>sdb1 \u2013 first partition of the second physical drive<\/li><li>etc.<\/li><\/ul>\n\n\n\n<p>\/dev\/sdd3 \u2013 this would be a third partition of the fourth device<\/p>\n\n\n\n<p>Note that devices differ on the third letter. Don&#8217;t make the mistake of writing to <em>\/dev\/sdA<\/em> instead of <em>\/dev\/sdB<\/em> \u2013 this will seriously ruin your evening&#8230; Trust me on that<\/p>\n\n\n\n<p><strong>Caution!<\/strong> Remamber that you have to write the image to the device itself and NOT a partition of the card.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Windows<\/h5>\n\n\n\n<p>With Windows the easiest way is using <a href=\"http:\/\/www.balena.io\/etcher\/\" target=\"_blank\" aria-label=\"undefined (opens in a new tab)\" rel=\"noreferrer noopener\">Balena Etche<\/a><a href=\"http:\/\/hddguru.com\/software\/HDD-Raw-Copy-Tool\/\" target=\"_blank\" aria-label=\"undefined (opens in a new tab)\" rel=\"noreferrer noopener\">r<\/a>. Just select Raspbian image as source, the SD card as target and confirm that you are sure when the tool asks you. <\/p>\n\n\n\n<p>You can use this tool to make backups of our SD card easily. Trim function allows for use of large cards without bloating the image, which means that 32GB card with 4GB used will take actually 4GB on your hard drive.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Initial Raspbian modification<\/h4>\n\n\n\n<p>In case you took the card out after flashing it with Raspbian image put it back in. It will contain two new partitions. <\/p>\n\n\n\n<p><strong>Caution! <\/strong>On Windows you will be able to see only the contents of the <em>boot <\/em>partition, as it is a fat32 partition.<br><strong>Caution!<\/strong> Do not format the other partition like Windows suggests! It contains Raspbian and is visible only to machines with Linux filesystem.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Allowing SSH connection to our server <\/h5>\n\n\n\n<p>SSH is the preferred way of connecting to the server. You do not need a graphical user interface (GUI) as everything will be done via command line. Foregoing GUI saves space and resources as our Raspberry do not have to encumber the CPU with it. Later we will even remove any packages connected with GUI \u2013 why keep what you do not use?<\/p>\n\n\n\n<p>Add an empty file named <em>ssh <\/em>to <em>boot<\/em> partition. If using Windows make sure the file is NOT named <em>ssh.txt<\/em> as windows automatically adds file extensions.<\/p>\n\n\n\n<p><strong>CAUTION<\/strong> If you fail to add this file, SSH interface will not be enabled and you will not be able to connect to your server. <\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Disabling Wi-Fi and Bluetooth<\/h5>\n\n\n\n<p>Since server should have a stable connection we are going to use cable connection instead of Wi-Fi, which we can then disable. If you still prefer using Wi-Fi connection over cable (which you should not), check out the <em>wpa_supplicant.conf<\/em> instruction below. Since we will not be using Bluetooth we can disable it as well. Wi-Fi and Bluetooth can be enabled and disabled at any time by including or removing the below code in <em>config.txt<\/em> on <em>boot <\/em>partition<\/p>\n\n\n\n<p>Navigate to <em>boot <\/em>partition on your SD card, find <em>config.txt<\/em> file and add following lines<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dtoverlay=disable-wifi\ndtoverlay=disable-bt<\/code><\/pre>\n\n\n\n<p>Bear in mind that disabling Wi-Fi on Raspberry without an ethernet port is a terrible idea. You do need a means of connecting to the internet&#8230;<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Enabling WiFi with <em>wpa_supplicant.conf<\/em> file<\/h5>\n\n\n\n<p>It is a bad idea to have a server run over Wi-Fi as it is not reliable enough and the bandwidth is limited when compared to cable connection. If you are not concerned with the speed at least think of reliability. Still, if you do not mind, or do not have a choice for some reason, here is how to connect to Wi-Fi.<\/p>\n\n\n\n<p>Navigate to <em>boot <\/em>partition on your SD card, create a new file and name it <em>wpa_supplicant.conf <\/em> again mind the extension. Inside place the following code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>country=XX\nctrl_interface=DIR=\/var\/run\/wpa_supplicant GROUP=netdev\nupdate_config=1\n\nnetwork={\n    ssid=\"$wifi_name\"\n    psk=\"wifi_password\"\n}<\/code><\/pre>\n\n\n\n<ul><li>Substitute <em>XX<\/em> in <em>country <\/em>line specifying your country code in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2\">ISO 3166-1 alpha-2<\/a> standard. Different countries use different frequencies for Wi-Fi and due to legal reasons you need to change it. Also it might not connect if your router has a different country from your Raspberry<\/li><li>Substitute <em>$wifi_name<\/em> in <em>ssid<\/em> line with the name of your Wi-Fi<\/li><li>Substitute <em>$wifi_password<\/em> in <em>psk<\/em> line with your Wi-Fi password<\/li><\/ul>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Booting Raspberry for the first time<\/h4>\n\n\n\n<p>Just put the SD card that we just prepared into your Raspberry, connect it with ethernet cable to your router and plug in the power.<\/p>\n\n\n\n<p><strong>CAUTION<\/strong> it is advised to firstly go through all steps below before opening ports on your router!<br><strong>CAUTION<\/strong> if you have port 22 open and pointing to your Raspberry then it will be accessible through the internet and anyone can log into it with the default credentials!<\/p>\n\n\n\n<p>If all went well your Raspberry should now be connected to your local network, either via eth0 or Wi-Fi. Give it a minute to boot properly and log in<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Using SSH to access your raspberry <\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">Finding your Raspberry IP<\/h5>\n\n\n\n<p>Consult the manual of your router on how to log into the admin panel and in device list search for device named &#8220;raspberry&#8221;<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Connecting on Windows<\/h5>\n\n\n\n<p>You can connect via <a href=\"https:\/\/putty.org\/\">PuTTY<\/a>. In <em>host name<\/em> put the IP of your Raspberry on local network, make sureto select the <em>SSH <\/em>connection type.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Connecting on Linux<\/h5>\n\n\n\n<p>Open a terminal window and use the following command <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh pi@$RASPBERRY_IP<\/code><\/pre>\n\n\n\n<p>Substitute <em>$RASPBERRY_IP<\/em> with your&#8230; Raspberry&#8217;s IP address on your local network.<\/p>\n\n\n\n<p>In case you do not have an ssh client installed run the following command first<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install openssh<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Bonus \u2013 Android<\/h5>\n\n\n\n<p>It is also possible to log into your server via phone. Your smartphone can allow you to remotely access the server just like any other computer can. I cannot recommend in good faith going through this tutorial series on your phone but it is possible as well. It can, however, be used to remotely reboot a service, access a log, add a user or just check up on your server. I am currently using habilis&#8217; <a href=\"https:\/\/habilisbest.com\/ssh-welcome-screen\">dynamic MOTD<\/a> and after I log in I get presented with basic information regarding the health of the server. Should you need it, you can shut down the Pi as well \u2013 bear in mind that a power cycle is needed for a boot after a shutdown.<\/p>\n\n\n\n<p>In case you are interested, look for <em>SSH client<\/em> on Play Store or AppStore. A good choice would be <em>Juice SSH<\/em>. It has a premium version but basic is useful as well, I never felt the need to upgrade to premium.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">First time login to your Raspberry Pi<\/h4>\n\n\n\n<p>The default credentials for logging in are as follows<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user: pi\npassword: raspberry<\/code><\/pre>\n\n\n\n<p>We will be creating a new user and deleting the default one shortly<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Updating raspberry<\/h4>\n\n\n\n<p>Before we do anything, we need to make sure our server is up to date. Run the following commands answering <em>y<\/em> to all prompts<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt upgrade\nsudo apt autoremove<\/code><\/pre>\n\n\n\n<ul><li>update \u2013 updates the repository cache files, which tell our server what packages are available, in which version and what are their dependencies<\/li><li>upgrade \u2013 actually updates packages that you have currently installed on your system to their newest versions<\/li><li>autoremove \u2013 should a package installed automatically become useless i.e. no other package depends on it any longer, either because something got uninstalled and it orphaned said package or it became obsolete, this command will remove any such packages<\/li><\/ul>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Creating a new user<\/h4>\n\n\n\n<p>Now we can add a new user that we will be using instead of the default user <em>pi<\/em>. Since it is a well-known user you might be at risk of a security breach if you fail to at least change the password. It is best, however, to just delete <em>pi<\/em> instead, you really do not need it. We will do that in a moment. For now run those commands to create a new user and add it to <em>video<\/em> group<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo adduser $NEW_USER_NAME\nsudo usermod -aG video $NEW_USER_NAME<\/code><\/pre>\n\n\n\n<p>Apart from the new password, which should <strong>NOT <\/strong>be <em>12345<\/em>, you can to input some basic information about the new user. You can safely ignore it and just press enter every time and confirm with <em>y<\/em> at the end. It does not matter to us, unless you know why that matters but then you would not be reading this guide.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Adding our new user to <em>video <\/em>group enables the usage of <em>vcgencmd <\/em>commands to e.g. check CPU temperature, failure to add that user to <em>video <\/em>group will result in errors while using <em>vcgencmd<\/em>. It is not important to normal users e.g. email account users that we will create later, but add it to your main administrator account for good measure.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">adduser vs useradd<\/h5>\n\n\n\n<p>We have two commands available to us to add users. <em>adduser<\/em>, which we used, and <em>useradd <\/em>\u2013 this one should be avoided. The difference is that <em>adduser <\/em>creates a home directory and copies default files there for the new user. <em>useradd <\/em>does not. At a later stage, when we will be setting up the email server, we will also create a basic skeleton of the mailbox folders in <em>\/etc\/skel<\/em> so that any subsequent users we create will have them enabled and copied to their folder by default. Skeleton and \/etc\/skel \u2013 ha-ha! Am I right? Nothing?<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Allowing the new user to use <strong><em>sudo<\/em><\/strong><\/h4>\n\n\n\n<p>By default root account is disabled on Raspbian. Good, we do not actually need it, and 99% should be done with normal account using <em>sudo<\/em> command anyways. Sudo stands for <em>superuser do<\/em> \u2013 act as the highest authority on the server. All configuration modifications, reading logs and many more things require <em>root <\/em>privileges \u2013 hence <em>sudo<\/em>! <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/imgs.xkcd.com\/comics\/sandwich.png\" alt=\"\"\/><figcaption>Credit <a href=\"https:\/\/imgs.xkcd.com\/comics\/sandwich.png\">xkcd<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>We have two straightforward ways of enabling a user to use <em>sudo<\/em>. Either we can add the new user to <em>sudo <\/em>group or run visudo command.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Adding the user to <em>sudo <\/em>group<\/h4>\n\n\n\n<p>This is easy and you probably already figured out how to do it, just type the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo usermod -aG sudo $NEW_USER_NAME<\/code><\/pre>\n\n\n\n<p>The drawback is that you will be asked for password when you use sudo the first time during the current session. It is a preemptive measure for that time when you leave your desk with the terminal window open \u2013 only your files are compromised and not the whole server. Usually this is the best choice of enabling sudo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Using <em>visudo<\/em><\/h4>\n\n\n\n<p>Another way is to use <em>visudo <\/em>command. This modifies the file telling your system who is the boss around here, so to speak. Be careful as erroneous dealings here might break everything you already did so far! As we have no way of logging in as root you would have to start the whole installation process anew!<\/p>\n\n\n\n<p><em>visudo <\/em>modifies the <em>\/etc\/sudoers<\/em> file that normally is only readable to the <em>root <\/em>user. By default even root is not able to write to the file. You can check out the contents of the file running the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cat \/etc\/sudoers<\/code><\/pre>\n\n\n\n<p>Now that we know what we are modifying let us get on with it.<\/p>\n\n\n\n<p>To access visudo run the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo visudo<\/code><\/pre>\n\n\n\n<p>Find the following line<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ROOT ALL=(ALL:ALL) ALL<\/code><\/pre>\n\n\n\n<p>Directly below, in a separate line add the following<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$NEW_USER_NAME ALL=(ALL:ALL) NOPASSWD: ALL<\/code><\/pre>\n\n\n\n<p>Substitute $NEW_USER_NAME with the name of the user you created, save and exit. <em>visudo <\/em>parses the file before writing it to sudoers and checks for errors in case you make an unrecoverable mistake. If you make such a mistake after saving and closing the file it will ask you what to do. type <em><strong>e<\/strong><\/em> to edit the file again or <em><strong>x<\/strong><\/em> to exit discarding changes.<\/p>\n\n\n\n<p>Now you have a user that can act as <em>root <\/em>(superuser) using the command <em>sudo<\/em>. The <em>NOPASSWD:<\/em> bit is there so that you are not asked for password when using <em>sudo<\/em>. I do not recommend adding it in a live situation, again \u2013 a potential security breach. Linux, in contrast to Windows, is all about security.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Acting as root<\/h4>\n\n\n\n<p>If for some reason you actually need, or want, to become root run the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo su -<\/code><\/pre>\n\n\n\n<p>You will notice that Bash shell changed colors to reflect that you are acting as <em>root <\/em>and stopped helping you with flashy colors. That is to tell you to be careful. You can stop acting as root by simply typing <em>exit <\/em>in the command prompt.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Basic configuration of Raspbian<\/h4>\n\n\n\n<p>Now it is a good time to use the <em>raspi-config<\/em> tool that enables us to modify some system settings. Run the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo raspi-config<\/code><\/pre>\n\n\n\n<ul><li>Navigate to <em>2 Network Options<\/em> and change <em>N1 Hostname<\/em> to your <em>FQDN (domain name)<\/em><\/li><li>Now go to <em>3 Boot Options<\/em> and change <em>B1 Desktop \/ CLI<\/em> to <em>B1 Console<\/em><\/li><li>Navigate to <em>4 Localisation Options<\/em> and set up correct settings. You can skip wi-fi even if you are using it, <em>wpa_supplicant.conf<\/em> took care of any settings we might want to change here<\/li><li>Navigate to <em>7 Advanced Options<\/em> and select <em>A1 Expand Filesystem<\/em><\/li><li><em>OPTIONAL <\/em>In advanced options select minimal memory split for video, you don&#8217;t need that<\/li><li>Select finish, if not prompted for a reboot, reboot now running the following command<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo reboot<\/code><\/pre>\n\n\n\n<p>FQDN stand for Fully Qualified Domain and it should reflect the domain you are going to use. If your domain is <em>example.com<\/em> then this is what you should put there. It will be used by postfix email delivery agent later on<\/p>\n\n\n\n<p>As mentioned earlier we only require CLI (Command Line Interface) and resources needed to run desktop environment (GUI) can be used elsewhere.<\/p>\n\n\n\n<p>Raspbian defaults to UK standards. Changing to en_US.utf-8 is the most versatile option. Keyboard options are changed so that you can use special symbols on your keyboard and local letters<\/p>\n\n\n\n<p>Expanding the file system will make sure you are using all the available space on your SD card.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Log in with the new username and test sudo<\/h4>\n\n\n\n<p>After a reboot, connect to your server via SSH like you did previously, however this time instead of using <em>pi<\/em> username use the one that you added. Once you are logged in run the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update<\/code><\/pre>\n\n\n\n<p>If you are able to update the repository and server is not asking &#8220;Are you root?&#8221; then all is fine and we are almost done with setting up our server. If something is wrong check out previous paragraphs of this tutorial.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Deleting the default user<\/h4>\n\n\n\n<p>Now that we have everything set up, including our new administrative account we can get rid of our default user <em>pi<\/em>. To do that run the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo deluser pi<\/code><\/pre>\n\n\n\n<p><strong>CAUTION <\/strong>It is important to delete and never use the username <em>pi<\/em> as it is a default Raspbian account with sudo privileges. Should someone log in with <em>pi <\/em>username the intruder will have access to all data stored on your server and can break your machine after stealing all your data. Yeah that&#8217;s gone now&#8230; During the next step we will secure our server, but logging in as <em>pi<\/em> will not be considered an attack, intruder had all the credentials needed, and will not be prevented. Think of it as leaving your house keys on a sidewalk with the address attached to it. Server hardware can be checked and it shows that it runs on Raspberry.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Conclusion<\/h4>\n\n\n\n<p>Right now we have a working server with a new user. <em>Tabula rasa <\/em>so to speak. We can now order it to do whatever we want. But before we do that we need to<a href=\"https:\/\/codedoneright.eu\/?page_id=187\"> secure it<\/a> and open to the world. Stay tuned for the next part on tightening security. Deleting the default user is just not enough.<\/p>\n\n\n\n<p>Feel free to drop a comment if you spot a mistake somewhere or if a software update made a part of the tutorial obsolete and in need of updating!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Typical Raspberry Pi OS, called Raspbian, installation is too cumbersome for a server. You do not even need desktop environment. This part of the webstack tutorial will focus on installing a minimalistic system that can be fine-tuned to your needs.&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":71,"menu_order":10,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Installing Raspbian the go-to Raspberry OS &#8212; Code Done Right!<\/title>\n<meta name=\"description\" content=\"Check out the quick and easy way to install a minimalistic Raspbian OS for hosting stuff on your Raspberry Pi in just under an hour!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codedoneright.eu\/?page_id=78\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Installing Raspbian the go-to Raspberry OS &#8212; Code Done Right!\" \/>\n<meta name=\"twitter:description\" content=\"Check out the quick and easy way to install a minimalistic Raspbian OS for hosting stuff on your Raspberry Pi in just under an hour!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/imgs.xkcd.com\/comics\/sandwich.png\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/codedoneright.eu\/?page_id=78\",\"url\":\"https:\/\/codedoneright.eu\/?page_id=78\",\"name\":\"Installing Raspbian the go-to Raspberry OS &#8212; Code Done Right!\",\"isPartOf\":{\"@id\":\"https:\/\/codedoneright.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/codedoneright.eu\/?page_id=78#primaryimage\"},\"image\":{\"@id\":\"https:\/\/codedoneright.eu\/?page_id=78#primaryimage\"},\"thumbnailUrl\":\"https:\/\/imgs.xkcd.com\/comics\/sandwich.png\",\"datePublished\":\"2020-01-30T01:51:36+00:00\",\"dateModified\":\"2020-07-21T17:41:43+00:00\",\"description\":\"Check out the quick and easy way to install a minimalistic Raspbian OS for hosting stuff on your Raspberry Pi in just under an hour!\",\"breadcrumb\":{\"@id\":\"https:\/\/codedoneright.eu\/?page_id=78#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/codedoneright.eu\/?page_id=78\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codedoneright.eu\/?page_id=78#primaryimage\",\"url\":\"https:\/\/imgs.xkcd.com\/comics\/sandwich.png\",\"contentUrl\":\"https:\/\/imgs.xkcd.com\/comics\/sandwich.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/codedoneright.eu\/?page_id=78#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/codedoneright.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Pi server\",\"item\":\"https:\/\/codedoneright.eu\/?page_id=71\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Installing Raspbian\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/codedoneright.eu\/#website\",\"url\":\"https:\/\/codedoneright.eu\/\",\"name\":\"Code Done Right!\",\"description\":\"Raspberry Pi server guides\",\"publisher\":{\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/codedoneright.eu\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568\",\"name\":\"CodeDoneRight\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png\",\"contentUrl\":\"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png\",\"width\":120,\"height\":120,\"caption\":\"CodeDoneRight\"},\"logo\":{\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/codedoneright.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Installing Raspbian the go-to Raspberry OS &#8212; Code Done Right!","description":"Check out the quick and easy way to install a minimalistic Raspbian OS for hosting stuff on your Raspberry Pi in just under an hour!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codedoneright.eu\/?page_id=78","twitter_card":"summary_large_image","twitter_title":"Installing Raspbian the go-to Raspberry OS &#8212; Code Done Right!","twitter_description":"Check out the quick and easy way to install a minimalistic Raspbian OS for hosting stuff on your Raspberry Pi in just under an hour!","twitter_image":"https:\/\/imgs.xkcd.com\/comics\/sandwich.png","twitter_misc":{"Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/codedoneright.eu\/?page_id=78","url":"https:\/\/codedoneright.eu\/?page_id=78","name":"Installing Raspbian the go-to Raspberry OS &#8212; Code Done Right!","isPartOf":{"@id":"https:\/\/codedoneright.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codedoneright.eu\/?page_id=78#primaryimage"},"image":{"@id":"https:\/\/codedoneright.eu\/?page_id=78#primaryimage"},"thumbnailUrl":"https:\/\/imgs.xkcd.com\/comics\/sandwich.png","datePublished":"2020-01-30T01:51:36+00:00","dateModified":"2020-07-21T17:41:43+00:00","description":"Check out the quick and easy way to install a minimalistic Raspbian OS for hosting stuff on your Raspberry Pi in just under an hour!","breadcrumb":{"@id":"https:\/\/codedoneright.eu\/?page_id=78#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codedoneright.eu\/?page_id=78"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codedoneright.eu\/?page_id=78#primaryimage","url":"https:\/\/imgs.xkcd.com\/comics\/sandwich.png","contentUrl":"https:\/\/imgs.xkcd.com\/comics\/sandwich.png"},{"@type":"BreadcrumbList","@id":"https:\/\/codedoneright.eu\/?page_id=78#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codedoneright.eu\/"},{"@type":"ListItem","position":2,"name":"Raspberry Pi server","item":"https:\/\/codedoneright.eu\/?page_id=71"},{"@type":"ListItem","position":3,"name":"Installing Raspbian"}]},{"@type":"WebSite","@id":"https:\/\/codedoneright.eu\/#website","url":"https:\/\/codedoneright.eu\/","name":"Code Done Right!","description":"Raspberry Pi server guides","publisher":{"@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codedoneright.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568","name":"CodeDoneRight","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/","url":"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png","contentUrl":"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png","width":120,"height":120,"caption":"CodeDoneRight"},"logo":{"@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/codedoneright.eu"]}]}},"_links":{"self":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/78"}],"collection":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=78"}],"version-history":[{"count":85,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/78\/revisions"}],"predecessor-version":[{"id":1193,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/78\/revisions\/1193"}],"up":[{"embeddable":true,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/71"}],"wp:attachment":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=78"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}