<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debian &#8211; Andromedabay Store</title>
	<atom:link href="https://andromedabay.ddns.net/category/my-topics/operating-systems/debian/feed/" rel="self" type="application/rss+xml" />
	<link>https://andromedabay.ddns.net</link>
	<description>Your source of Technical Insight and Interesting Stuff</description>
	<lastBuildDate>Mon, 06 Apr 2026 03:20:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://andromedabay.ddns.net/wp-content/uploads/2015/08/cropped-myicon-32x32.png</url>
	<title>Debian &#8211; Andromedabay Store</title>
	<link>https://andromedabay.ddns.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Welcome to wx_bgi_graphics</title>
		<link>https://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/</link>
					<comments>https://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/#respond</comments>
		
		<dc:creator><![CDATA[Hammad Rauf]]></dc:creator>
		<pubDate>Mon, 06 Apr 2026 03:20:19 +0000</pubDate>
				<category><![CDATA[C Programming]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Free-Pascal]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[MSFT Windows]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RaspberryPi OS]]></category>
		<guid isPermaLink="false">https://andromedabay.ddns.net/?p=3015</guid>

					<description><![CDATA[wx_bgi_graphics A cross-platform shared graphics library for C/C++, Python3, Free Pascal, and other languages. Introduction wx_bgi_graphics is a modern, cross-platform graphics library inspired by the]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>1 Minute, 42 Second                </div>

            </div><h2>wx_bgi_graphics</h2>
<p>A cross-platform shared graphics library for C/C++, Python3, Free Pascal, and other languages.</p>
<p><iframe title="YouTube video player" src="https://www.youtube.com/embed/_Am34b04trs" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h2>Introduction</h2>
<p>wx_bgi_graphics is a modern, cross-platform graphics library inspired by the simplicity of classic BGI graphics (Borland Graphics Interface). It has been thoroughly tested on Windows 11, Ubuntu Linux, and macOS (M4 chip). This open-source library is easy to integrate and is particularly well-suited for educational purposes, rapid prototyping, and light-weight or full-fledged graphical applications.</p>
<h2>Key Features</h2>
<p>• &#8211; Cross-platform support (Windows, Linux, macOS)<br />
• &#8211; Compatible with C/C++, Python3, Free Pascal, and more<br />
• &#8211; Simple API inspired by classic BGI graphics<br />
• &#8211; Built on wxWidgets for stability and portability<br />
• &#8211; Ideal for teaching, demos, and small graphical tools<br />
• &#8211; A work in progress, more features will be added, as time progresses.</p>
<h2>Getting Started</h2>
<p>To get started with wx_bgi_graphics, simply clone the GitHub repository and link the shared library to your project. Comprehensive documentation is available to guide you through the setup process. The repository includes example programs in multiple languages to help you get up and running quickly.</p>
<figure id="attachment_3013" aria-describedby="caption-attachment-3013" style="width: 320px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2026/04/wx_bgi_graphics_001.gif"><img fetchpriority="high" decoding="async" class="size-full wp-image-3013" src="https://andromedabay.ddns.net/wp-content/uploads/2026/04/wx_bgi_graphics_001.gif" alt="wx_bgi_graphics_001_gif" width="320" height="240" /></a><figcaption id="caption-attachment-3013" class="wp-caption-text">wx_bgi_graphics_001_gif</figcaption></figure>
<div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-3015-1" width="640" height="480" preload="metadata" controls="controls"><source type="video/mp4" src="https://andromedabay.ddns.net/wp-content/uploads/2026/04/wx_bgi_graphics_001.mp4?_=1" /><a href="https://andromedabay.ddns.net/wp-content/uploads/2026/04/wx_bgi_graphics_001.mp4">https://andromedabay.ddns.net/wp-content/uploads/2026/04/wx_bgi_graphics_001.mp4</a></video></div>
<h2>Contributing and Reporting Issues</h2>
<p>We welcome contributions from the community! If you encounter any issues, have feature requests, or wish to contribute code, please visit our GitHub repository to open an issue or submit a pull request. Your feedback and participation help make wx_bgi_graphics better for everyone.</p>
<h2>Why wx_bgi_graphics Matters</h2>
<p>wx_bgi_graphics revives the ease and accessibility of classic BGI graphics while embracing the power and flexibility of modern, cross-platform development. It is an excellent tool for students learning graphics programming, educators designing interactive lessons, and hobbyists building lightweight graphical applications.</p>
<h2>Further Reading</h2>
<p>• GitHub Repository: <a href="https://github.com/Andromedabay/wx_bgi_graphics" target="_blank" rel="noopener">https://github.com/Andromedabay/wx_bgi_graphics</a><br />
• Documentation: <a href="https://andromedabay.github.io/wx_bgi_graphics/index.html" target="_blank" rel="noopener">https://andromedabay.github.io/wx_bgi_graphics/index.html</a><br />
• wxWidgets Framework: <a href="https://www.wxwidgets.org/" target="_blank" rel="noopener">https://www.wxwidgets.org/</a></p>


		<div class=" twp-social-share  booster-clear">

						    <header class="twp-plugin-title twp-share-title">
			        <h2>Share</h2>
			    </header>
			
		    <div class="twp-share-container">
				<div class="twp-social-icons twp-social-facebook">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/'); "  href="https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">

													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z" /></svg></span>
				                                        <span class="twp-label-title">
				                                            Facebook				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-twitter">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://twitter.com/intent/tweet?text=Welcome%20to%20wx_bgi_graphics&#038;url=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/'); "  href="https://twitter.com/intent/tweet?text=Welcome%20to%20wx_bgi_graphics&#038;url=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Twitter				                                        </span>
												    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-pinterest">										<a class="twp-icon-holder" rel="nofollow" href="javascript:twp_be_pinterest()">
											<span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>				                                <span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Pinterest				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-linkedin">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://www.linkedin.com/shareArticle?mini=true&#038;title=Welcome%20to%20wx_bgi_graphics&#038;url=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/'); "  href="http://www.linkedin.com/shareArticle?mini=true&#038;title=Welcome%20to%20wx_bgi_graphics&#038;url=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        LinkedIn				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-email">										<a class="twp-icon-holder" rel="nofollow"  href="mailto:?subject=:&amp;body= Welcome to wx_bgi_graphics http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/">
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M0 3v18h24v-18h-24zm6.623 7.929l-4.623 5.712v-9.458l4.623 3.746zm-4.141-5.929h19.035l-9.517 7.713-9.518-7.713zm5.694 7.188l3.824 3.099 3.83-3.104 5.612 6.817h-18.779l5.513-6.812zm9.208-1.264l4.616-3.741v9.348l-4.616-5.607z" /></svg>				                                    </span>
				                                    <span class="twp-share-label twp-label-title">
				                                        Email				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-vk">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://vk.com/share.php?url=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/&#038;caption=Welcome%20to%20wx_bgi_graphics'); "  href="http://vk.com/share.php?url=http://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/&#038;caption=Welcome%20to%20wx_bgi_graphics" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        VK				                                    </span>
												</span>
																					</a>
										</div>			</div>
		</div>

	]]></content:encoded>
					
					<wfw:commentRss>https://andromedabay.ddns.net/welcome-to-wx_bgi_graphics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://andromedabay.ddns.net/wp-content/uploads/2026/04/wx_bgi_graphics_001.mp4" length="939918" type="video/mp4" />

			</item>
		<item>
		<title>Home Email Server Setup with Personal Domain</title>
		<link>https://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/</link>
					<comments>https://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/#respond</comments>
		
		<dc:creator><![CDATA[Hammad Rauf]]></dc:creator>
		<pubDate>Sat, 12 Aug 2023 00:06:01 +0000</pubDate>
				<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Cost Effective Website]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Email Server]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[home email]]></category>
		<category><![CDATA[self hosted email]]></category>
		<category><![CDATA[small business email]]></category>
		<category><![CDATA[smtp server]]></category>
		<category><![CDATA[step by step guide]]></category>
		<guid isPermaLink="false">https://andromedabay.ddns.net/?p=1335</guid>

					<description><![CDATA[You can have a personal Home Email Server Setup without breaking the bank. It can also be used by small businesses. You will have total]]></description>
			<script>console.log("CSV DATA (RAW):", `<br />
Item,Description,Estimated Cost,Cost Period<br />
Hardware,&#8221;It can be Raspberry-Pi, or any other Single Board Computer. Choose a computer that consumes less Electrical Power and makes less noise. It will remain turned On, 24 hours a day 7 days a week.&#8221;,CAD$ 50 to 250,One time<br />
Internet Connection,&#8221;Internet connection from a provider like Rogers, Bell, or Others. Also known as your Internet Service Provider (ISP).&#8221;,Varying,monthly<br />
Domain Name Registration,&#8221;Registration of a custom Domain Name of your choice. For example &#8220;&#8221;mybusines.com&#8221;&#8221;, or &#8220;&#8221;myfamily.ca&#8221;&#8221;. Email addresses will be using this domain name like, for example: &#8220;&#8221;abe.lincoln@mybusiness.com&#8221;&#8221;, &#8220;&#8221;sarah@myfamily.ca&#8221;&#8221;, etc. Domain Names are translated into matching IP Address when a DNS lookup is performed. So this way we do not need to remember IP Address but only remember the domain name of a site, or email address.&#8221;,CAD$ 10 to 30,Yearly<br />
Dynamic DNS Resolution,&#8221;ISPs provide your home router with different IP Addresses over a period of a year. The IP Address can also change anytime. Dynamic DNS Resolution allows your domain name to always have the correct IP address, even when your ISP changes the IP Address. This is also known as DDNS. There are free DDNS services, but when using a custom DNS name DDNS service may also need to be purchased.&#8221;,CAD$ 0 to 13,Yearly<br />
DNS Records Editing Capability/Service,&#8221;Domain name registration by default creates a DNS A-Type record. But for email setup, we need several other DNS record types, in addition to the A-Type record. Your DNS/DDNS provider may charge extra for providing these additional DNS Records.&#8221;,CAD$ 0 to 13,Yearly<br />
Email Store-Forward Service,&#8221;Most ISP block the relevant ports to receive email from the Internet. We will need to pay for this store-forward service from a third party vendor, which should be more economical as compared to getting this service from your ISP.&#8221;,CAD$ 13 to 22,Yearly<br />
Email (SMTP) Outbound Relay Service,&#8221;Most ISP block the relevant ports to send outbound email to the Internet. We will need to pay for this SMTP Protocol relay service from a third party vendor, which should be more economical as compared to getting this service from your ISP.&#8221;,CAD$ 13 to 22,Yearly<br />`);</script><script>console.log("processed data:", [{"value":"Item","colspan":1,"rowspan":1},{"value":"Description","colspan":1,"rowspan":1},{"value":"Estimated Cost","colspan":1,"rowspan":1},{"value":"Cost Period<br \/>","colspan":1,"rowspan":1}]);</script><script>console.log("CSV DATA (RAW):", `<br />
Name,Status,Protocols,Internal port,External port,Local IP address / Device name,Description<br />
&nbsp;,&nbsp;,&nbsp;,&nbsp;,&nbsp;,&nbsp;,<br />
HTTP,Enabled,TCP,80,80,192.168.0.6 ( or Target Server Host-Name),<br />
HTTPS,Enabled,TCP,443,443,192.168.0.6 ( or Target Server Host-Name),<br />
Postfix-SMTP,Enabled,TCP,25,25,192.168.0.6 ( or Target Server Host-Name),<br />
Postfix-SMTPS,Enabled,TCP,465,465,192.168.0.6 ( or Target Server Host-Name),<br />
Postfix-MSA,Enabled,TCP,587,587,192.168.0.6 ( or Target Server Host-Name),Mail Submission Agent<br />
Postfix-SMTP,Enabled,TCP,2525,2525,192.168.0.6 ( or Target Server Host-Name),<br />
IMAP-login,Enabled,TCP,143,143,192.168.0.6 ( or Target Server Host-Name),<br />
dovecot-POP3,Enabled,TCP,110,110,192.168.0.6 ( or Target Server Host-Name),<br />
IMAP-login,Enabled,TCP,993,993,192.168.0.6 ( or Target Server Host-Name),<br />
dovecot-POP3,Enabled,TCP,995,995,192.168.0.6 ( or Target Server Host-Name)<br />`);</script><script>console.log("processed data:", [{"value":"Name","colspan":1,"rowspan":1},{"value":"Status","colspan":1,"rowspan":1},{"value":"Protocols","colspan":1,"rowspan":1},{"value":"Internal port","colspan":1,"rowspan":1},{"value":"External port","colspan":1,"rowspan":1},{"value":"Local IP address \/ Device name","colspan":1,"rowspan":1},{"value":"Description<br \/>","colspan":1,"rowspan":1}]);</script><script>console.log("CSV DATA (RAW):", `<br />
Test URL,Description<br />
http://192.168.0.6     Or <br /> http://&#8211;IP Address of Target Server&#8211;,Test URL on your local area network.<br />
http://somewhere.com   Or <br /> http://&#8211;Your Domain Name&#8211;,&#8221;Test URL from outside your Local area network. (Use your cell phone, with Wifi turned off, and data enabled).&#8221;<br />`);</script><script>console.log("processed data:", [{"value":"Test URL","colspan":1,"rowspan":1},{"value":"Description<br \/>","colspan":1,"rowspan":1}]);</script>							<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>50 Minute, 26 Second                </div>

            </div><p>You can have a personal Home Email Server Setup without breaking the bank. It can also be used by small businesses. You will have total control over it. You can create as many email post boxes as you like (Limited by your server capabilities). This post will document the steps and commands used for this purpose. It can be implemented on Raspberry Pi (or similar Single Board Computers), using Debian (Linux), Postfix, Dovecot, etc. as discussed below. You will be paying for the personal Domain Name, Email Store Forward service, and a SMTP Relay Host &#8211; the cost of these 3 should be between US$ 20 to US $ 50 per year, depending on the service provider you choose. The benefit is that all family members or small business employees get email post boxes on your server, you do not pay anything more. You can have unlimited email post boxes limited only by the size of your hard disk on your email server.</p>
<p>Many Internet Service Providers (ISPs) like Rogers, Bell and others block the default port for sending and receiving email directly on your home network. Why they do that, security or pure commercial reason is a separate debate, I will not delve into that here. The ISPs also keep changing your Router/Gateway&#8217;s public IP Address, ie., it is not a static IP Address and can change at any time. In this post we will see ways of over coming these constraints in a budget friendly way.</p>
<p><em><strong>Disclaimer:</strong> Opening ones Internet Router to additional traffic and installing Web Server and Email Server Software in your home computers can expose you to potentially malicious traffic and users and bots on the Internet. These instructions are primarily designed to document the general process, these may not be written with fool proof security in mind. The author assumes no responsibility of security, nor functionality. Follow these instructions at your own risk only. If you continue, you are agreeing to this disclaimer.</em></p>
<p><em><strong>Attribution</strong>: Free Email Icon used attribution: <a title="email icons" href="https://www.flaticon.com/free-icons/email">Email icons created by Smashicons &#8211; Flaticon</a></em></p>
<p>In particular we will be discussing the following topics in this post.</p>
<div id="mycontents"><strong>Contents:</strong></div>
<p><a href="#pre-requisites">Inventory and Cost Estimates</a><br />
<a href="#hardware">Hardware</a><br />
<a href="#domain-name">Domain Name Registration</a><br />
<a href="#dynamic-dns-registration">Dynamic DNS Service</a><br />
<a href="#operating-system">Operating System</a><br />
<a href="#fixed-ip-address">Static Fixed IP Address</a><br />
<a href="#dynamic-dns-update-client-software">Dynamic DNS Update Client Software</a><br />
<a href="#port-forwarding">Port Forwarding on Home Router</a><br />
<a href="#installation-web-server">Installation of Apache Web Server</a><br />
<a href="#configuration-website">Configuration of Website</a><br />
<a href="#ssl-certificate">Free SSL Certificate for Website and Email Server</a><br />
<a href="#installation-postfix-dovecot">Installation of Email Server Software (Postfix and Dovecot)</a><br />
<a href="#configure-email">Configuration of your Email Server</a><br />
<a href="#configure-relay">Configuration of Email Relay Provider &#8211; Incoming and Outgoing</a><br />
<a href="#dns-records">DNS Records for Email</a><br />
<a href="#testing-email-setup">Testing Email Setup</a><br />
<a href="#add-user-post-box">Adding a New User Email Post Box</a><br />
<a href="#connect-android">Connecting to your Email from Android Device</a><br />
<a href="#connect-pc">Connecting to your Email from PC &#8211; Windows Mail</a><br />
<a href="#further-reading">Further Reading</a></p>
<h2 class="Top-Heading">Inventory and Cost Estimates</h2>
<p>You will need the following items in the duration of this setup.</p>
    <style>
    /* Scoped styles for this table instance */
    #data-table-69d549446cd31 thead th {
        background-color: #4CAF50 !important;
        color: #fff;
    }
    #data-table-69d549446cd31 tbody tr:nth-child(even) {
        background-color: #f2f2f2;
    }
    #data-table-69d549446cd31 tbody tr:nth-child(odd) {
        background-color: #ffffff;
    }
    #data-table-69d549446cd31 th:first-child,
    #data-table-69d549446cd31 td:first-child {
        background-color: #f9f9f9;
    }
    </style>
    <div id="table-container">
        <table id="data-table-69d549446cd31" class="data-table">
            <thead>
                                <tr>
                                                                        <th>Item</th>
                                                                                                <th>Description</th>
                                                                                                <th>Estimated Cost</th>
                                                                                                <th>Cost Period<br /></th>
                                                            </tr>
                            </thead>
            <tbody>
                                    <tr>
                                                                                    <td>Hardware</td>
                                                                                                                <td>It can be Raspberry-Pi, or any other Single Board Computer. Choose a computer that consumes less Electrical Power and makes less noise. It will remain turned On, 24 hours a day 7 days a week.</td>
                                                                                                                <td>CAD$ 50 to 250</td>
                                                                                                                <td>One time<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Internet Connection</td>
                                                                                                                <td>Internet connection from a provider like Rogers, Bell, or Others. Also known as your Internet Service Provider (ISP).</td>
                                                                                                                <td>Varying</td>
                                                                                                                <td>monthly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Domain Name Registration</td>
                                                                                                                <td>Registration of a custom Domain Name of your choice. For example "mybusines.com", or "myfamily.ca". Email addresses will be using this domain name like, for example: "abe.lincoln@mybusiness.com", "sarah@myfamily.ca", etc. Domain Names are translated into matching IP Address when a DNS lookup is performed. So this way we do not need to remember IP Address but only remember the domain name of a site, or email address.</td>
                                                                                                                <td>CAD$ 10 to 30</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Dynamic DNS Resolution</td>
                                                                                                                <td>ISPs provide your home router with different IP Addresses over a period of a year. The IP Address can also change anytime. Dynamic DNS Resolution allows your domain name to always have the correct IP address, even when your ISP changes the IP Address. This is also known as DDNS. There are free DDNS services, but when using a custom DNS name DDNS service may also need to be purchased.</td>
                                                                                                                <td>CAD$ 0 to 13</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>DNS Records Editing Capability/Service</td>
                                                                                                                <td>Domain name registration by default creates a DNS A-Type record. But for email setup, we need several other DNS record types, in addition to the A-Type record. Your DNS/DDNS provider may charge extra for providing these additional DNS Records.</td>
                                                                                                                <td>CAD$ 0 to 13</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Email Store-Forward Service</td>
                                                                                                                <td>Most ISP block the relevant ports to receive email from the Internet. We will need to pay for this store-forward service from a third party vendor, which should be more economical as compared to getting this service from your ISP.</td>
                                                                                                                <td>CAD$ 13 to 22</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Email (SMTP) Outbound Relay Service</td>
                                                                                                                <td>Most ISP block the relevant ports to send outbound email to the Internet. We will need to pay for this SMTP Protocol relay service from a third party vendor, which should be more economical as compared to getting this service from your ISP.</td>
                                                                                                                <td>CAD$ 13 to 22</td>
                                                                                                                <td>Yearly<br /></td>
                                                                        </tr>
                            </tbody>
        </table>
    </div>
    
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="hardware" class="Top-Heading">Hardware</h2>
<p>You will need a small computer that can remain turned on 24 hours a day 7 days a week. This is because if you turn it off, your incoming email can be lost forever. Ideally it should consume very low electrical power, and should be low noise device. I would recommend on the minimum a 4 core CPU device. <a href="https://www.raspberrypi.com/products/raspberry-pi-4-model-b/" target="_blank" rel="noopener">Raspberry Pi</a> or <a href="https://beebom.com/best-raspberry-pi-4-alternatives/" target="_blank" rel="noopener">similar form device</a> may be ideal. Another possibility is using a <a href="https://www.ebay.ca/sch/i.html?_nkw=thin+client" target="_blank" rel="noopener">used thin client device</a> or one of the many <a href="https://www.aliexpress.com/item/1005004905826390.html" target="_blank" rel="noopener">Intel  J4125/N5095/J6426 based mini PC</a>. Storage (Hard Disk/SSD) can be a minimum of 256 GB. At minimum the device should have 1 ethernet port, the faster the better. It can be ARM Based CPU or Intel/AMD CPU. I would prefer a passive cooling, fan-less device, that radiates extra heat using metal fins, so it can be extra low noise. Atleaset 2 GB on board RAM is the minimum recommended amount for Debian 12. I am using 8 GB RAM in my setup. We will refer to this computer as the &#8220;target hardware&#8221; or &#8220;your email server&#8221; in the rest of this article.</p>
<p>In this article I will be installing on Intel/AMD architecture based machine.</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="domain-name" class="Top-Heading">Domain Name Registration</h2>
<p>There are free Domain Name services but for an email server setup you need to own your own Domain Name. You can choose a Domain Name Registrar that allows you to change the DNS servers list for your Domain Name. One such service is <a href="https://www.godaddy.com/en-ca/domains" target="_blank" rel="noopener">GoDaddy.com</a>. You may also explore the option of Registering your Domain Name directly with the Dynamic DNS Service Provider (see next section), if they offer this service. Almost all Domain Name Registration services offer Top Level Domain (TLD) Names like *.com, *.net, and *.org but you may need to find specialized Domain Registrar&#8217;s for specific TLD&#8217;s like *.uk, *.ca, *.pk, *.in, *.cn. Usually it should cost you from US$ 10 to US$20 for 1 year of registration. Sometimes there may be a promotion or discounted offer for lower first year price.</p>
<p>Usually Domain Name Registration means that an A-Type record will be created in the DNS Server database of your  domain registrar. An A-Type record is simply an &#8220;(IP) Address&#8221; record. If you do not have a website initially, it can be pointing to a parking web-server page provided by the registrar. You will be able to change this IP address since you have paid for this custom Domain Name. Please note that for this article&#8217;s purpose we need a Domain registrar, that allows us to even change the primary Name-Server (database) for this Domain Name. We would like our DNS Name Server&#8217;s database to be hosted at a Dynamic DNS Service provider (see next section).</p>
<p>For the purpose of this article we will assume that we have registered a personal Domain Name of &#8220;somewhere.com&#8221; at GoDaddy.com. The following screen shot shows the Go-Daddy.com website console for managing your domain. In particular it is showing the Name-Servers tab, after the Name servers were changed to point to Dynamic DNS Service Name-servers.</p>
<figure id="attachment_1465" aria-describedby="caption-attachment-1465" style="width: 1776px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers.png"><img decoding="async" class="wp-image-1465 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers.png" alt="Godaddy.com Name-servers Tab" width="1776" height="992" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers.png 1776w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-600x335.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-300x168.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-1024x572.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-768x429.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DNS-Name-servers-1536x858.png 1536w" sizes="(max-width: 1776px) 100vw, 1776px" /></a><figcaption id="caption-attachment-1465" class="wp-caption-text">Godaddy.com Name-servers Tab</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<h2></h2>
<h2 id="dynamic-dns-registration" class="Top-Heading">Dynamic DNS Service</h2>
<p>When we get Internet Connection from an Internet Service Provider (ISP), they usually give us a router/gateway device through which we connect to the Public Internet. This Router itself has a public IP address on the Internet. If at any time I know this IP address, then I can connect to my home router from outside networks. For email and web server that is hosted in my home, this is a desired capability, because then I can bind my custom Domain Name to this IP address. But usually ISP&#8217;s keep this IP address as a dynamic IP address and it frequently changes.</p>
<p>A Dynamic DNS service either assigns you a Dynamic DNS Name or lets you bring your custom DNS name and link it with a Dynamic IP Tracking Service. This service constantly monitors your home router Public IP address and updates your DNS Name Record to point to the correct IP address at all times. You can get a free Dynamic DNS name also from them for testing it out. You need to enable a part of this system on your home network. Sometimes the customer side part is either Dynamic DNS capability in your home router, or a small Application running on any computer in your local network. We will discuss more on how to install this small utility application on your target hardware in <a href="#dynamic-dns-update-client-software">a later section</a>.</p>
<p>Some examples of Dynamic DNS (DDNS) service providers are <a href="https://www.noip.com/" target="_blank" rel="noopener">No-ip.com</a> , <a href="https://account.dyn.com/" target="_blank" rel="noopener">DynDNS</a> and <a href="https://www.dynu.com/" target="_blank" rel="noopener">Dynu.com</a>.</p>
<p>In this article we will be using Dynu.com&#8217;s Dynamic DNS Service. Please register for a free service <a href="https://www.dynu.com/" target="_blank" rel="noopener">Dynu.com</a>, later on when you are comfortable and you need it, you may upgrade to a paid service.</p>
<p>Following is a screen shot from Dynu.com control panel showing the status of Dynamic DNS service. It is showing the currently assigned Public IP address to the home router and also when this entry was automatically updated. Note: Additional configuration for this service will be performed in <a href="#dynamic-dns-update-client-software">a later section</a>.</p>
<figure id="attachment_1467" aria-describedby="caption-attachment-1467" style="width: 1650px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service.png"><img loading="lazy" decoding="async" class="wp-image-1467 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service.png" alt="DDNS Service Control panel page" width="1650" height="519" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service.png 1650w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-600x189.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-300x94.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-1024x322.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-768x242.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/DDNS-Service-1536x483.png 1536w" sizes="auto, (max-width: 1650px) 100vw, 1650px" /></a><figcaption id="caption-attachment-1467" class="wp-caption-text">DDNS Service Control panel page</figcaption></figure>
<p>Following is another screen shot from Dynu.com control panel, this time showing a list of Name Servers. Values from this list are used to modify the Domain Registrar&#8217;s Name Server list (GoDaddy in this article).</p>
<figure id="attachment_1468" aria-describedby="caption-attachment-1468" style="width: 1414px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page.png"><img loading="lazy" decoding="async" class="wp-image-1468 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page.png" alt="Dynu.com Name Servers list" width="1414" height="963" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page.png 1414w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-600x409.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-300x204.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-1024x697.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Dynu-DDNS-Name-Servers-Page-768x523.png 768w" sizes="auto, (max-width: 1414px) 100vw, 1414px" /></a><figcaption id="caption-attachment-1468" class="wp-caption-text">Dynu.com Name Servers list</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="operating-system" class="Top-Heading">Operating System (OS)</h2>
<p>The operating system on the device will need to be a Linux based Operating System. Linux is an open-source and usually free Operating System. The instructions in this article have been tested on AMD-64 based <a href="https://www.debian.org/CD/netinst/" target="_blank" rel="noopener">Debian</a> 12 &#8220;Bookworm&#8221; Linux. Since Raspbian, Ubuntu, Mint, etc. are based on Debian, these should mostly work on these OSes also. Follow your <a href="https://wiki.debian.org/RaspberryPi4#Boot_and_Installing_Debian_on_the_Raspberry_PI_4" target="_blank" rel="noopener">Hardware specific instructions</a> to install Debian 12 or any other similar operating system on your device.</p>
<p>Installation of a Linux Graphical User Interface (GUI) Desktop is not necessary for this email server setup (If you are comfortable using command line only), but having a GUI Desktop like GNOME, KDE Plasma, may make it easy for you to use the computer. Installing a GUI Desktop otherwise makes some difference performance wise. But with our hardware specification the performance gain of a Non-GUI Server may be insignificant. The only other thing with GUI installation is the OS size on disk will become large. Note that almost all instructions in the tutorial will be based on Command Line Interface(CLI) and GUI may not be used at all. But having a GUI will make it fun to use afterwards, if you wish to use this server for other purposes also.</p>
<p>Following steps document the OS Installation process using the Installer at this link <a href="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.1.0-amd64-netinst.iso" target="_blank" rel="noopener">debian-12.1.0-amd64-netinst.iso</a>. You have to choose the correct *.iso file based on your target Hardware specific CPU architecture. You can download this installation software CD image file (*.iso) on your PC, MAC or Linux Desktop or Laptop. Then you need to burn this onto an Installation Media like USB Thumb Drive or External DVD, that you will use to boot the target Hardware for the first time. If using a USB Thumb Drive, then you may use <a href="https://etcher.balena.io/#download-etcher" target="_blank" rel="noopener">Balena Etcher</a> or some other similar tool to prepare the USB from the Downloaded *.iso file.</p>
<p>Let us start with the Installation steps. Connect your USB Thumb Drive (Or external DVD) to the target hardware, and boot from the installation USB Thumb Drive. For Installation using this download you will need an active (Ethernet) Internet connection to your computer. Starting the installation can be done using Graphical Install or Standard (Non-Graphical) Install. &#8220;Graphical Install&#8221; means that you want the <span style="text-decoration: underline;"><em>installation-task</em></span> done using Windows and Mouse &#8211; Decision of whether you choose to <span style="text-decoration: underline;"><em>install/deploy</em></span> the GUI Desktop software on the hard disk will be done later on.</p>
<figure id="attachment_1386" aria-describedby="caption-attachment-1386" style="width: 637px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001.png"><img loading="lazy" decoding="async" class="wp-image-1386 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001.png" alt="Debian 12 Install screen 001" width="637" height="478" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001.png 637w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001-600x450.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-001-300x225.png 300w" sizes="auto, (max-width: 637px) 100vw, 637px" /></a><figcaption id="caption-attachment-1386" class="wp-caption-text">Debian 12 Install screen 001</figcaption></figure>
<p>If we use Graphical Install option, then the next choices are &#8220;Select a language&#8221;, &#8220;Select your location&#8221;,  &#8220;Configure the Keyboard&#8221;, and then &#8220;Configure the network&#8221; screen appears. Here you can specify the &#8220;Hostname&#8221; for your email server. I recommend using &#8220;mail&#8221; as the host name.</p>
<figure id="attachment_1391" aria-describedby="caption-attachment-1391" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002.png"><img loading="lazy" decoding="async" class="wp-image-1391 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002.png" alt="Debian Install Screen Hostname" width="793" height="602" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002-600x455.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002-300x228.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-002-768x583.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1391" class="wp-caption-text">Debian Install Screen Hostname</figcaption></figure>
<p>Then in the next screen provide the &#8220;Domain name&#8221;, this should be the same Domain name that you have registered previously.</p>
<figure id="attachment_1393" aria-describedby="caption-attachment-1393" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name.png"><img loading="lazy" decoding="async" class="wp-image-1393 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name.png" alt="Debian Install Screen - Domain Name" width="793" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Domain-Name-768x578.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1393" class="wp-caption-text">Debian Install Screen &#8211; Domain Name</figcaption></figure>
<p>Then the next screen will be for &#8220;Set up users and passwords&#8221;. Choose a root password on this screen. Next screen will be &#8220;Set up users and passwords&#8221;. In this screen you have to create a user account for non-administrative activities. I will assume this user name to be &#8220;User One&#8221;.</p>
<figure id="attachment_1395" aria-describedby="caption-attachment-1395" style="width: 792px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name.png"><img loading="lazy" decoding="async" class="wp-image-1395 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name.png" alt="Debian Install Screen - User name" width="792" height="600" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name.png 792w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name-600x455.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name-300x227.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-User-name-768x582.png 768w" sizes="auto, (max-width: 792px) 100vw, 792px" /></a><figcaption id="caption-attachment-1395" class="wp-caption-text">Debian Install Screen &#8211; User name</figcaption></figure>
<p>Then the next screen is &#8220;Username for your account:&#8221;, this is the login id for the &#8220;User One&#8221; user. I will choose &#8220;user01&#8221; as the login ID.</p>
<figure id="attachment_1398" aria-describedby="caption-attachment-1398" style="width: 792px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID.png"><img loading="lazy" decoding="async" class="wp-image-1398 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID.png" alt="Debian Install Screen - Username - Login ID" width="792" height="600" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID.png 792w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID-600x455.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID-300x227.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Login-ID-768x582.png 768w" sizes="auto, (max-width: 792px) 100vw, 792px" /></a><figcaption id="caption-attachment-1398" class="wp-caption-text">Debian Install Screen &#8211; Username &#8211; Login ID</figcaption></figure>
<p>Next screen is for &#8220;Choose a password for the new user&#8221;, fill it with appropriate password value. Next screen is for &#8220;Configure the clock&#8221; where you select the time zone. The next screen will be displayed after the Installation software detects your Hard Disk/SSD Storage Device. It is titled as &#8220;Partition disks&#8221;. Unless you have a reason to choose another option, choose the &#8220;Partition method:&#8221; to be &#8211; &#8220;Guided &#8211; use entire disk&#8221;.</p>
<figure id="attachment_1399" aria-describedby="caption-attachment-1399" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method.png"><img loading="lazy" decoding="async" class="wp-image-1399 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method.png" alt="Debian Install Screen - Partition Method" width="793" height="596" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Method-768x577.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1399" class="wp-caption-text">Debian Install Screen &#8211; Partition Method</figcaption></figure>
<p>On the next screen, it will show you the detected Disk Controller and Disk Name (and capacity) where the Operating System will be installed. If you have more then one hard-disk/SSD then make sure you choose the correct drive in this screen. On the next screen it will ask for the &#8220;Partitioning scheme:&#8221; to use for the selected disk. You can choose &#8220;All files in one partition (recommended for new users)&#8221; option. Next screen will be a confirmation of all the choices you made for Partitioning of disks, before the disk changes are actually written to the disk.</p>
<figure id="attachment_1401" aria-describedby="caption-attachment-1401" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation.png"><img loading="lazy" decoding="async" class="wp-image-1401 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation.png" alt="Debian Install Screen - Partition Disk Confirmation" width="793" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Partition-Disk-Confirmation-768x578.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1401" class="wp-caption-text">Debian Install Screen &#8211; Partition Disk Confirmation</figcaption></figure>
<p>The next screen will be a reconfirmation before the disk is actually Partitioned and old data is erased. Select &#8220;Yes&#8221; to answer the question &#8220;Write the changes to disks?&#8221; and click continue. After the Partitioning of the disk, the Installer will copy the base Operating system files (Excluding the GUI Desktop) onto the hard disk. Let it install the base system.</p>
<p>After the base system is installed, Installer will show you a screen for &#8220;Configure the package manager&#8221; and ask you if you have other downloaded media/CD/DVD for Debian &#8211; &#8220;Scan extra installation media?&#8221;. You can choose no here. Package Manager in Linux is a software utility application that lets you search for and install other software in Linux, once the base OS is installed, but it needs to be configured once. The Default package manager in Debian is called &#8220;apt&#8221;.</p>
<figure id="attachment_1404" aria-describedby="caption-attachment-1404" style="width: 795px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media.png"><img loading="lazy" decoding="async" class="wp-image-1404 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media.png" alt="Debian Install Screen - Scan Extra Install Media" width="795" height="596" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media.png 795w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media-600x450.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Scan-Extra-Install-Media-768x576.png 768w" sizes="auto, (max-width: 795px) 100vw, 795px" /></a><figcaption id="caption-attachment-1404" class="wp-caption-text">Debian Install Screen &#8211; Scan Extra Install Media</figcaption></figure>
<p>On the next screen of &#8220;Configure the package manager&#8221; it will ask you to choose &#8220;Debian archive mirror country:&#8221;. Here you should choose a country name close to your location. Then on the next screen it will ask you to choose &#8220;Debian archive mirror:&#8221;. The choice actually makes little difference. I will choose University of Waterloo &#8211; CS Club Mirror, since it is pretty close to my location.</p>
<figure id="attachment_1405" aria-describedby="caption-attachment-1405" style="width: 794px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2.png"><img loading="lazy" decoding="async" class="wp-image-1405 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2.png" alt="Debian Install Screen - Mirror Archive 2" width="794" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2.png 794w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Mirror-Archive-2-768x577.png 768w" sizes="auto, (max-width: 794px) 100vw, 794px" /></a><figcaption id="caption-attachment-1405" class="wp-caption-text">Debian Install Screen &#8211; Mirror Archive 2</figcaption></figure>
<p>In the next screen, it will ask for &#8220;HTTP proxy information (blank for none):&#8221;. Usually it should be left empty and click continue.</p>
<p>The next screen of the Installer asks you if you wish to &#8220;Participate in the package usage survey&#8221;. A Package in Debian is a software that can be downloaded and installed using Package Manager. You can choose Yes or No. I will choose &#8220;No&#8221; for now. The next screen is for selecting the Software to be added to your base OS installation. This screen is titled &#8220;Software Selection&#8221;. Here you can choose if you want to install the any GUI Desktop systems like:</p>
<ul>
<li>GNOME,</li>
<li>Xfce,</li>
<li>GNOME Flashback,</li>
<li>KDE Plasma,</li>
<li>Cinnamon,</li>
<li>MATE,</li>
<li>LXDE and,</li>
<li>LXQt.</li>
</ul>
<p>The Default selected option is GNOME but I feel more comfortable with Microsoft Windows Styled &#8211; KDE Plasma or Cinnamon. You may also choose a light weight LXDE or LXQt, which will give you a GUI and not consume too much hard disk space. If you are comfortable with Command Line only OS, then you may uncheck &#8220;Debian desktop environment&#8221; and uncheck all Desktop software from this list &#8211; GNOME, Xfce, GNOME Flashback, KDE Plasma, Cinnamon, MATE, LXDE and LXQt. I will like to install KDE Plasma for this tutorial. One additional software I choose from this list is &#8220;SSH Server&#8221;. I will be installing a Web Server also but not in this screen. My final choices look like below screen.</p>
<figure id="attachment_1408" aria-describedby="caption-attachment-1408" style="width: 791px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices.png"><img loading="lazy" decoding="async" class="wp-image-1408 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices.png" alt="Debian Install Screen - Software Selection Choices" width="791" height="595" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices.png 791w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Software-Selection-Choices-768x578.png 768w" sizes="auto, (max-width: 791px) 100vw, 791px" /></a><figcaption id="caption-attachment-1408" class="wp-caption-text">Debian Install Screen &#8211; Software Selection Choices</figcaption></figure>
<p>The Installer will then Download the selected software and install it. It may take several minutes, depending on your network speed. Once done, the next screen will be titled &#8220;Install the GRUB boot loader&#8221;. It is recommended to install this piece of software, otherwise your computer may fail to boot.</p>
<figure id="attachment_1416" aria-describedby="caption-attachment-1416" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader.png"><img loading="lazy" decoding="async" class="wp-image-1416 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader.png" alt="Debian Install Screen - Install GRUB Boot Loader" width="793" height="598" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-Install-GRUB-Boot-Loader-768x579.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1416" class="wp-caption-text">Debian Install Screen &#8211; Install GRUB Boot Loader</figcaption></figure>
<p>On the next screen choose &#8220;Device for boot loader installation&#8221;. Click on your primary hard disk.</p>
<figure id="attachment_1418" aria-describedby="caption-attachment-1418" style="width: 791px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk.png"><img loading="lazy" decoding="async" class="wp-image-1418 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk.png" alt="Debian Install Screen - GRUB Boot Disk" width="791" height="596" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk.png 791w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-screen-GRUB-Boot-Disk-768x579.png 768w" sizes="auto, (max-width: 791px) 100vw, 791px" /></a><figcaption id="caption-attachment-1418" class="wp-caption-text">Debian Install Screen &#8211; GRUB Boot Disk</figcaption></figure>
<p>That is it. You OS has been installed. The last screen advises you to remove the installation media (USB  Thumb Drive or DVD) and then reboot the computer.</p>
<figure id="attachment_1420" aria-describedby="caption-attachment-1420" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen.png"><img loading="lazy" decoding="async" class="wp-image-1420 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen.png" alt="Debian Install Screen - Last Reboot Screen" width="793" height="595" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen-600x450.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian12-Install-Last-Reboot-Screen-768x576.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1420" class="wp-caption-text">Debian Install Screen &#8211; Last Reboot Screen</figcaption></figure>
<p>After reboot, if you let it boot automatically you should see a screen similar to the following after all boot steps are completed.</p>
<figure id="attachment_1422" aria-describedby="caption-attachment-1422" style="width: 796px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen.png"><img loading="lazy" decoding="async" class="wp-image-1422 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen.png" alt="Debian Install Screen - Completed - First Login Screen" width="796" height="598" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen.png 796w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen-600x451.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Debian-Install-Screen-Completed-First-Login-Screen-768x577.png 768w" sizes="auto, (max-width: 796px) 100vw, 796px" /></a><figcaption id="caption-attachment-1422" class="wp-caption-text">Debian Install Screen &#8211; Completed &#8211; First Login Screen</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="fixed-ip-address" class="Top-Heading">Static Fixed IP Address</h2>
<p>Login to the target hardware. For this first session and the commands given in this section, make sure that you are actually logged in to the target computer via keyboard and Display Monitor and not via SSH connection.</p>
<h4>Add user01 to sudo Group (CLI and GUI &#8211; KDE Plasma Installation)</h4>
<p>First we will add the default user account &#8220;user01&#8221; into &#8220;sudo&#8221; group, so that we can run Root privileged commands easily.  Start a Terminal session.</p>
<figure id="attachment_1447" aria-describedby="caption-attachment-1447" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session.png"><img loading="lazy" decoding="async" class="wp-image-1447 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session.png" alt="Start Terminal Session" width="793" height="597" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session-600x452.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session-300x226.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Start-Terminal-Session-768x578.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1447" class="wp-caption-text">Start Terminal Session</figcaption></figure>
<p>In the Terminal session command line, first add the user to SUDO group by typing the following commands:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ su -
Password: (enter here the password of the root user that you specified during your Debian installation, and press Enter)

# apt install sudo

# adduser user01 sudo

# exit

$ exit</pre>
<figure id="attachment_1448" aria-describedby="caption-attachment-1448" style="width: 800px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group.png"><img loading="lazy" decoding="async" class="wp-image-1448 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group.png" alt="Terminal session - add user01 to sudo group" width="800" height="595" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group.png 800w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group-600x446.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group-300x223.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-add-user01-to-sudo-group-768x571.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption id="caption-attachment-1448" class="wp-caption-text">Terminal session &#8211; add user01 to sudo group</figcaption></figure>
<p>You have to exit (end the Terminal session) and log-out of the Server once, for changes to take effect. Login again and start a new Terminal session again, this time user01 will be member of sudo group. We will also add a NO-PASSWORD directive in the &#8220;/etc/sudoers&#8221; file so that we are not prompted for password every time we use the &#8220;sudo&#8221; prefix. Type the following command in the new Terminal session.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ sudo nano /etc/sudoers
[sudo] password for user01: (Enter the password for user01 you entered during installation and login)</pre>
<p>Nano text editor will open, scroll down to near the bottom of the file and update the 2 lines as shown in the below screen shot. What we have done is comment out one line and added another one in its place.</p>
<figure id="attachment_1449" aria-describedby="caption-attachment-1449" style="width: 793px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file.png"><img loading="lazy" decoding="async" class="wp-image-1449 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file.png" alt="Terminal session 2 - Edit /etc/sudoers file" width="793" height="594" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file.png 793w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file-600x449.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file-300x225.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-session-2-Edit-sudoers-file-768x575.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a><figcaption id="caption-attachment-1449" class="wp-caption-text">Terminal session 2 &#8211; Edit /etc/sudoers file</figcaption></figure>
<p>Press CTRL+O to write the changes to disk, then press CTRL+X to exit Nano editor. You now need to log off one more time. Then log in again for SUDO changes to take effect.</p>
<h4>Assign Fixed Static IP (GUI &#8211; KDE Plasma Installation)</h4>
<p>Before assigning a fixed IP to the target computer make sure your Internet Router DHCP settings (DHCP is the system that assigns automatic IP addresses to devices on your local network), are set to issue IP Addresses in a range that allows fixed IP address outside that range. For example: DHCP range can be from 192.168.0.40 to 192.168.0.250, this leaves the range 192.168.0.2 to 192.168.0.39 for fixed IP addresses.</p>
<p>Open a terminal session. In a GUI Desktop (KDE plasma) based installation of Debian 12, Network connections are managed by Network Manager, which has a nice GUI Interface for changing IP addresses. But we can also set a static IP using Network Manager CLI &#8220;nmcli&#8221; utility. Over here I will document how use &#8220;nmcli&#8221; to set static IP address. Type the following commands to list the Network Connections:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ nmcli connection show</pre>
<p>You will see output showing you the connections. Important thing to note here is the NAME of the ethernet connection.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">user01@mail:~$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  f01afddc-9c89-40c4-b95e-6ad9d8888e02  ethernet  enp0s3
lo                  4ba750cf-38e5-4a1e-b45d-fd423458125a  loopback  lo
user01@mail:~$</pre>
<p>You can also check the current status of the connection with the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ nmcli dev status
$ nmcli con mod 'Wired connection 1' ipv4.address 192.168.0.6/24
$ nmcli con mod 'Wired connection 1' ipv4.gateway 192.168.0.1
$ nmcli con mod 'Wired connection 1' ipv4.dns "8.8.8.8"
$ nmcli con mod 'Wired connection 1' ipv4.method manual
$ nmcli con up 'Wired connection 1'
$ ip addr</pre>
<p>A complete session showing the all the commands you need to set static IP Address is given below. Your input commands are highlighted:</p>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="eclipse" data-enlighter-highlight="1,5,18,19-22,24" data-enlighter-lineoffset="1">user01@mail:~$ nmcli dev status
DEVICE  TYPE      STATE                   CONNECTION
enp0s3  ethernet  connected               Wired connection 1
lo      loopback  connected (externally)  lo

user01@mail:~$ ip addr
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:be:f6:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.192/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3
       valid_lft 3121sec preferred_lft 3121sec
    inet6 fe80::a00:27ff:febe:f658/64 scope link noprefixroute
       valid_lft forever preferred_lft forever


user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.address 192.168.0.6/24
user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.gateway 192.168.0.1
user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.dns "8.8.8.8"
user01@mail:~$ nmcli con mod 'Wired connection 1' ipv4.method manual


user01@mail:~$ nmcli con up 'Wired connection 1'
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)


user01@mail:~$ ip addr
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:be:f6:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.6/24 brd 192.168.0.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:febe:f658/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
user01@mail:~$
</pre>
<h4>Assign Fixed Static IP (CLI Installation)</h4>
<p>On Command Line Installation of Debian 12 there is no Network Manager application, but the ordinary Networking Service only. So the commands in the CLI setup will be as follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ ip address
$ ip -c link show
$ sudo ls -l /etc/network/interfaces
$ sudo cat /etc/network/interfaces
$ sudo nano /etc/network/interfaces
{ Comment out the line.....#iface enp0s3 inet dhcp
And add the following lines.......
iface enp0s3 inet static
address 192.168.0.7    (Or choose what ever static IP address you want in your LAN)
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8
}
$ sudo systemctl restart networking
$ ip address
</pre>
<p>&nbsp;</p>
<p>When typed on an interactive session, the session can look like follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.193/24 brd 192.168.0.255 scope global dynamic enp0s3
       valid_lft 3263sec preferred_lft 3263sec
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$ ip -c link show
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
user01@mail:~$ ip -c address show enp0s3
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.193/24 brd 192.168.0.255 scope global dynamic enp0s3
       valid_lft 3130sec preferred_lft 3130sec
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$ sudo ls -l /etc/network/interfaces
-rw-r--r-- 1 root root 317 Aug 13 20:53 /etc/network/interfaces

user01@mail:~$ sudo cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp


user01@mail:~$ sudo nano /etc/network/interfaces
user01@mail:~$ sudo cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
#iface enp0s3 inet dhcp
iface enp0s3 inet static
address 192.168.0.7
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8

user01@mail:~$ sudo systemctl restart networking


user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$</pre>
<p>&nbsp;</p>
<h4>Disable IPv6 (GUI &#8211; KDE Plasma Installation)</h4>
</div>
<div>We will also disable IPv6, so that it does not interfere in Port Forwarding later on. The following commands will be used to disable IPv6:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ nmcli connection show
$ ip address show enp0s3
$ nmcli connection modify 'Wired connection 1' ipv6.method "disabled"
$ nmcli connection up 'Wired connection 1'
$ ip address show enp0s3
</pre>
<p>When type in the terminal session the output looks like that shown below:</p>
<figure id="attachment_1456" aria-describedby="caption-attachment-1456" style="width: 930px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output.png"><img loading="lazy" decoding="async" class="wp-image-1456 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output.png" alt="Terminal Session - Disable IPv6 Output" width="930" height="491" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output.png 930w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output-600x317.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output-300x158.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Terminal-Session-Disable-IPv6-Output-768x405.png 768w" sizes="auto, (max-width: 930px) 100vw, 930px" /></a><figcaption id="caption-attachment-1456" class="wp-caption-text">Terminal Session &#8211; Disable IPv6 Output</figcaption></figure>
<h4>Set DNS Servers in /etc/resolv.conf</h4>
<p>Depending on your setup you may need to edit /etc/resolve.conf file to look like the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@mail:~$ sudo cat /etc/resolv.conf
nameserver 192.168.0.1
nameserver 8.8.8.8

user01@mail:~$</pre>
<p>&nbsp;</p>
<h4>Disable IPv6 (CLI Installation)</h4>
<p>On Command Line Installation of Debian 12 there is no Network Manager, so the method of disabling IPv6 is also different than GUI version. Use the following commands to disable IPv6 on the CLI installation of Debian 12:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ ip address
$ sudo ls -l /etc/sysctl.conf
$ sudo cat /etc/sysctl.conf

$ sudo nano /etc/sysctl.conf
{ Add the following lines at the bottom of the file .........
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1
}

$ sudo cat /etc/sysctl.conf
$ sudo reboot -h now
.....
$ ip address
</pre>
<p>&nbsp;</p>
<p>On an interactive session these commands can look like follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe93:7b1f/64 scope link
       valid_lft forever preferred_lft forever

user01@mail:~$ sudo ls -l /etc/sysctl.conf
-rw-r--r-- 1 root root 2355 Dec 19  2022 /etc/sysctl.conf

user01@mail:~$ sudo cat /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

###################################################################
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

###################################################################
# Magic system request Key
# 0=disable, 1=enable all, &gt;1 bitmask of sysrq functions
# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
# for what other values do
#kernel.sysrq=438




user01@mail:~$ sudo nano /etc/sysctl.conf
user01@mail:~$ sudo cat /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

###################################################################
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

###################################################################
# Magic system request Key
# 0=disable, 1=enable all, &gt;1 bitmask of sysrq functions
# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
# for what other values do
#kernel.sysrq=438

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1


user01@mail:~$ sudo reboot -h now

.....


user01@mail:~$ ip address
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever


user01@mail:~$ ip -c address show enp0s3
2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:93:7b:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
user01@mail:~$</pre>
<p>&nbsp;</p>
</div>
<div></div>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="dynamic-dns-update-client-software" class="Top-Heading">Dynamic DNS Update Client Software</h2>
<p>Dynamic DNS Provider service works best with either a Router based DDNS Update client or a target Computer installed DDNS client. In this article we will be installing Dynu.com&#8217;s DDNS Client on our target computer.</p>
<p>To install the DDNS Update Client Software for Dynu.com we will use the following commands:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo apt-get install -y ddclient
(Complete interactive configuration with default choices)

$ sudo systemctl status ddclient
$ sudo ls -l /etc/ddclient.conf
$ sudo cat /etc/ddclient.conf
(Examine the contents of Default configuration)



$ sudo cp /etc/ddclient.conf /etc/ddclient.conf_original
$ sudo nano /etc/ddclient.conf
(Modify the default configuration, as per your particulars)
$ sudo cat /etc/ddclient.conf
(Examine the modified configuration)



$ sudo systemctl stop ddclient
$ sudo systemctl start ddclient
$ sudo systemctl status ddclient
$ sudo journalctl -u ddclient -f
(Press CTRL+C to stop following journalctl logs)

(Each of the above sections is further described in detail below).</pre>
<p>Interactive Configuration with default choices can look like following screen shots (Screen shots from GUI &#8211; KDE Plasma Desktop, CLI screens shots will be quite similar):</p>
<p>1.</p>
<figure id="attachment_1471" aria-describedby="caption-attachment-1471" style="width: 915px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider.png"><img loading="lazy" decoding="async" class="wp-image-1471 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider.png" alt="Install ddclient 01 select service provider" width="915" height="486" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider.png 915w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider-600x319.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-service-provider-768x408.png 768w" sizes="auto, (max-width: 915px) 100vw, 915px" /></a><figcaption id="caption-attachment-1471" class="wp-caption-text">Install ddclient 01 select service provider</figcaption></figure>
<p>2.</p>
<figure id="attachment_1472" aria-describedby="caption-attachment-1472" style="width: 921px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol.png"><img loading="lazy" decoding="async" class="size-full wp-image-1472" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol.png" alt="Install ddclient 02 select protocol" width="921" height="491" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol.png 921w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol-600x320.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol-300x160.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-protocol-768x409.png 768w" sizes="auto, (max-width: 921px) 100vw, 921px" /></a><figcaption id="caption-attachment-1472" class="wp-caption-text">Install ddclient 02 select protocol</figcaption></figure>
<p>3.</p>
<figure id="attachment_1473" aria-describedby="caption-attachment-1473" style="width: 920px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server.png"><img loading="lazy" decoding="async" class="size-full wp-image-1473" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server.png" alt="Install ddclient 03 select ddns server" width="920" height="487" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server.png 920w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-ddns-server-768x407.png 768w" sizes="auto, (max-width: 920px) 100vw, 920px" /></a><figcaption id="caption-attachment-1473" class="wp-caption-text">Install ddclient 03 select ddns server</figcaption></figure>
<p>4.</p>
<figure id="attachment_1474" aria-describedby="caption-attachment-1474" style="width: 921px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username.png"><img loading="lazy" decoding="async" class="size-full wp-image-1474" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username.png" alt="Install ddclient 04 provide username" width="921" height="489" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username.png 921w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username-600x319.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-username-768x408.png 768w" sizes="auto, (max-width: 921px) 100vw, 921px" /></a><figcaption id="caption-attachment-1474" class="wp-caption-text">Install ddclient 04 provide username</figcaption></figure>
<p>5.</p>
<figure id="attachment_1475" aria-describedby="caption-attachment-1475" style="width: 918px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password.png"><img loading="lazy" decoding="async" class="size-full wp-image-1475" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password.png" alt="Install ddclient 05 provide password" width="918" height="487" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password.png 918w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-password-768x407.png 768w" sizes="auto, (max-width: 918px) 100vw, 918px" /></a><figcaption id="caption-attachment-1475" class="wp-caption-text">Install ddclient 05 provide password</figcaption></figure>
<p>6.</p>
<figure id="attachment_1476" aria-describedby="caption-attachment-1476" style="width: 918px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method.png"><img loading="lazy" decoding="async" class="size-full wp-image-1476" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method.png" alt="Install ddclient 06 read about Methods" width="918" height="487" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method.png 918w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-768x407.png 768w" sizes="auto, (max-width: 918px) 100vw, 918px" /></a><figcaption id="caption-attachment-1476" class="wp-caption-text">Install ddclient 06 read about Methods</figcaption></figure>
<p>7.</p>
<figure id="attachment_1477" aria-describedby="caption-attachment-1477" style="width: 920px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices.png"><img loading="lazy" decoding="async" class="size-full wp-image-1477" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices.png" alt="Install ddclient 07 select Method" width="920" height="490" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices.png 920w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices-600x320.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices-300x160.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-Method-choices-768x409.png 768w" sizes="auto, (max-width: 920px) 100vw, 920px" /></a><figcaption id="caption-attachment-1477" class="wp-caption-text">Install ddclient 07 select Method</figcaption></figure>
<p>8.</p>
<figure id="attachment_1478" aria-describedby="caption-attachment-1478" style="width: 922px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames.png"><img loading="lazy" decoding="async" class="size-full wp-image-1478" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames.png" alt="Install ddclient 08 provide registered Domain Name" width="922" height="488" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames.png 922w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames-600x318.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames-300x159.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Install-ddclient-select-hostnames-768x406.png 768w" sizes="auto, (max-width: 922px) 100vw, 922px" /></a><figcaption id="caption-attachment-1478" class="wp-caption-text">Install ddclient 08 provide registered Domain Name</figcaption></figure>
<p>After Default configuration with default values &#8220;/etc/ddclient.conf&#8221; file can look like following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo cat /etc/ddclient.conf

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

protocol=dyndns2 \
use=web, web=ipify-ipv4 \
login= \
password='' \
somewhere.com
</pre>
<p>Then when we edit the file with &#8216;nano&#8217; editor to introduce dynu.com&#8217;s user account details, it can look like following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo cat /etc/ddclient.conf

# /etc/ddclient.conf
daemon=900                                      # Check every 900 seconds (15 minutes).
syslog=yes                                      # Log update msgs to syslog.
mail=root                                       # Mail all msgs to root.
mail-failure=root                               # Mail failed update msgs to root.
pid=/var/run/ddclient.pid                       # Record PID in file.
ssl=yes                                         # Use ssl-support.  Works with ssl-library .
#use=if, if=eth0                                 # Get ip from hardware interface.
use=web, web=checkip.dynu.com/, web=ipify-ipv4
server=api.dynu.com                             # IP update server.
protocol=dyndns2
login=YOUR-REGISTERED-USERNAME_AT-DYNU.COM
password='YOUR-PASSWORD'
somewhere.com
mail.somewhere.com
</pre>
<p>&#8220;ddclient&#8221; default settings are stored at /etc/default/ddclient. You can edit it with the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo nano /etc/default/ddclient
</pre>
<p>The &#8220;daemon_interval&#8221; value has been modified to &#8220;15m&#8221; for 15 minutes. After edit this file contents look like following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic"># Configuration for ddclient scripts
# generated from debconf on Tue 01 Aug 2023 02:27:09 PM EDT
#
# /etc/default/ddclient

# Set to "true" if ddclient should be run every time DHCP client ('dhclient'
# from package isc-dhcp-client) updates the systems IP address.
run_dhclient="false"

# Set to "true" if ddclient should be run every time a new ppp connection is
# established. This might be useful, if you are using dial-on-demand.
run_ipup="false"

# Set the time interval between the updates of the dynamic DNS name in seconds.
# This option only takes effect if the ddclient runs in daemon mode.
daemon_interval="15m"
</pre>
<p>Then you can restart the DDNS Client software as follows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo systemctl stop ddclient
$ sudo systemctl start ddclient</pre>
<p>To examine &#8220;ddclient&#8217; logs use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u ddclient -f

(Press CTRL+C to stop following the logs)</pre>
<p>&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="port-forwarding" class="Top-Heading">Port Forwarding on Home Router</h2>
<p>This setting will be done in a slightly different way for each Internet Service Provider (ISP) because they all use different routers/gateway devices. But the important thing is that the following ports be opened. Note that these ports will be enabled in later sections, when we install Apache, enable SSL, and when we install Postfix and Dovecot.</p>
<p>    <style>
    /* Scoped styles for this table instance */
    #data-table-69d549446de6d thead th {
        background-color: #4CAF50 !important;
        color: #fff;
    }
    #data-table-69d549446de6d tbody tr:nth-child(even) {
        background-color: #f2f2f2;
    }
    #data-table-69d549446de6d tbody tr:nth-child(odd) {
        background-color: #ffffff;
    }
    #data-table-69d549446de6d th:first-child,
    #data-table-69d549446de6d td:first-child {
        background-color: #f9f9f9;
    }
    </style>
    <div id="table-container">
        <table id="data-table-69d549446de6d" class="data-table">
            <thead>
                                <tr>
                                                                        <th>Name</th>
                                                                                                <th>Status</th>
                                                                                                <th>Protocols</th>
                                                                                                <th>Internal port</th>
                                                                                                <th>External port</th>
                                                                                                <th>Local IP address / Device name</th>
                                                                                                <th>Description<br /></th>
                                                            </tr>
                            </thead>
            <tbody>
                                    <tr>
                                                                                    <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td> </td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>HTTP</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>80</td>
                                                                                                                <td>80</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>HTTPS</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>443</td>
                                                                                                                <td>443</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-SMTP</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>25</td>
                                                                                                                <td>25</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-SMTPS</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>465</td>
                                                                                                                <td>465</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-MSA</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>587</td>
                                                                                                                <td>587</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td>Mail Submission Agent<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>Postfix-SMTP</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>2525</td>
                                                                                                                <td>2525</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>IMAP-login</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>143</td>
                                                                                                                <td>143</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>dovecot-POP3</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>110</td>
                                                                                                                <td>110</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>IMAP-login</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>993</td>
                                                                                                                <td>993</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)</td>
                                                                                                                <td><br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>dovecot-POP3</td>
                                                                                                                <td>Enabled</td>
                                                                                                                <td>TCP</td>
                                                                                                                <td>995</td>
                                                                                                                <td>995</td>
                                                                                                                <td>192.168.0.6 ( or Target Server Host-Name)<br /></td>
                                                                                                                <td></td>
                                                                        </tr>
                            </tbody>
        </table>
    </div>
    <br />
&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="installation-web-server" class="Top-Heading">Installation of Apache Web Server</h2>
<p>You may be wondering, why we are installing Web Server when we actually only need an email-server. The primary reason is that email-server uses SSL certificates to assert its identity to other servers on the internet (including your e-mail relay, and other public email servers like yahoo.com, gmail.com, outlook.com etc.). We will be using &#8220;Let&#8217;s Encrypt&#8221; SSL Certificates, that are free and are renewed automatically. &#8220;Let&#8217;s Encrypt&#8221; renewal software robot (bot) needs a web server. Another benefit of having the Web server is that we can install a Web Application like WordPress, or Joomla. However, please note that in this article we will just use a simple HTML page as a placeholder and only content of the website.</p>
<p>Installation of Apache Web Server in Debian is really very simple. After completing this section you will have the default Apache page visible on port 80 of your Target Server. Since you have already setup port forwarding (in a previous section), the web page should also be visible from outside your home.</p>
<p>To install the Apache web server simply type the following command.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ sudo apt install apache2</pre>
<p>Once the Apache2 Web server is installed make sure that it is set to auto start on reboot, and start it.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">$ sudo systemctl enable apache2
$ sudo systemctl restart apache2</pre>
<p>Check that the default Apache page is visible on the following Hyper-links.</p>
<p>    <style>
    /* Scoped styles for this table instance */
    #data-table-69d549446ee77 thead th {
        background-color: #d3bb33ff !important;
        color: #fff;
    }
    #data-table-69d549446ee77 tbody tr:nth-child(even) {
        background-color: #f2f2f2;
    }
    #data-table-69d549446ee77 tbody tr:nth-child(odd) {
        background-color: #ffffff;
    }
    #data-table-69d549446ee77 th:first-child,
    #data-table-69d549446ee77 td:first-child {
        background-color: #f9f9f9;
    }
    </style>
    <div id="table-container">
        <table id="data-table-69d549446ee77" class="data-table">
            <thead>
                                <tr>
                                                                        <th>Test URL</th>
                                                                                                <th>Description<br /></th>
                                                            </tr>
                            </thead>
            <tbody>
                                    <tr>
                                                                                    <td>http://192.168.0.6     Or <br /> http://–IP Address of Target Server–</td>
                                                                                                                <td>Test URL on your local area network.<br /></td>
                                                                        </tr>
                                    <tr>
                                                                                    <td>http://somewhere.com   Or <br /> http://–Your Domain Name–</td>
                                                                                                                <td>Test URL from outside your Local area network. (Use your cell phone, with Wifi turned off, and data enabled).<br /></td>
                                                                        </tr>
                            </tbody>
        </table>
    </div>
    <br />
&nbsp;</p>
<div>We will be doing important Apache configuration in the next section. The default apache2 page looks like the following screen shot.</div>
<div>
<figure id="attachment_1550" aria-describedby="caption-attachment-1550" style="width: 640px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page.png"><img loading="lazy" decoding="async" class="wp-image-1550 size-large" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-1024x874.png" alt="Apache2 default page in Firefox browser." width="640" height="546" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-1024x874.png 1024w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-600x512.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-300x256.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page-768x655.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Apache2-Default-Page.png 1049w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a><figcaption id="caption-attachment-1550" class="wp-caption-text">Apache2 default page in Firefox browser.</figcaption></figure>
</div>
<div>Next step (next 2 sections) will be to create a simple placeholder web page as the only content of this web site. Plus we will also configure SSL, first with self-signed SSL certificates, then use &#8220;Let&#8217;s Encrypt&#8221; Software Bot to install and use actual Certificate Authority SSL Certificates.</div>
<p>&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="configuration-website" class="Top-Heading">Configuration of Website</h2>
<p>We will configure the Apache2 web server to serve a plain and simple placeholder page in this post. If required, it can be used to hold a professional looking website like WordPress or Joomla, but we will not be doing that over here.</p>
<p>We already have a simple Default page showing after the installation of Apache2 in the previous section. We will disable that and add our own simple page, in the following steps.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ cd /var/www/html
$ sudo mv index.html index.html.bak
$ sudo nano index.html
</pre>
<p>Then in the &#8220;nano&#8221; editor type or paste the following HTML code.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="html">&lt;html&gt;
&lt;head&gt;&lt;title&gt;My Site Home Page&lt;/title&gt;&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;My Site Home Page&lt;/h2&gt;
&lt;p&gt;Your content goes here...&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Press CTRL+O to save, and CTRL+X to exit nano editor. Then on the bash command prompt type the following to set correct permissions for the /var/www/html folder:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic"> $ cd /var/www
$ sudo chown -R root:www-data ./html
</pre>
<p>Now we will change the Apache2 server configuration to disable the default site, and show the new page/site we have saved above. Please type in the following commands.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ cd /etc/apache2/sites-available
$ sudo nano somewhere.com.conf
</pre>
<p>Then in the &#8220;nano&#8221; text editor type/copy-paste the following content:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="enlighter">&lt;VirtualHost somewhere.com:80&gt;
    Protocols http/1.1
    ServerAdmin webmaster@localhost
    ServerName somewhere.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/somewhere-com_error.log
    CustomLog ${APACHE_LOG_DIR}/somewhere-com_access.log combined
&lt;/VirtualHost&gt;
</pre>
<p>Press CTRL+O to save the file, then press CTRL+X to exit nano. Then at the Bash command prompt type the following commands:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo bash -c 'echo "192.168.0.6 somewhere.com" &gt;&gt; /etc/hosts'
$ sudo a2ensite somewhere.com.conf
$ sudo systemctl restart apache2
$ sudo a2dissite 000-default.conf
$ sudo systemctl restart apache2
$ sudo mv 000-default.conf 000-default.conf_disable
</pre>
<p>&nbsp;</p>
<p>In the code box above use your domain name instead of &#8220;somewhere.com&#8221;. Also use your local network IP address of the target server in line number 1. Line 1 is adding an entry for your domain name in &#8220;/etc/hosts&#8221; file. Use your local LAN IP Address of the Target Server on line1, do not use localhost or 127.0.0.1. Line 2 and 3 enables this new site configuration. Line 4 and 5 disable the default site configuration, then line 6 renames the default configuration also, so that it can not be used by mistake.</p>
<p>Your page should look like the following screen shot.</p>
<figure id="attachment_2751" aria-describedby="caption-attachment-2751" style="width: 724px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page.png"><img loading="lazy" decoding="async" class="wp-image-2751 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page.png" alt="Site Placeholder Page in Browser" width="724" height="738" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page.png 724w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page-600x612.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/Site-Placeholder-Page-294x300.png 294w" sizes="auto, (max-width: 724px) 100vw, 724px" /></a><figcaption id="caption-attachment-2751" class="wp-caption-text">Site Placeholder Page in Browser</figcaption></figure>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="ssl-certificate" class="Top-Heading">Free SSL Certificate for Website and Email Server</h2>
<p>Secure communication channels on public Internet that use full channel encryption need an SSL Certificate. Enabling SSL connections to a Web Server, also known as enabling HTTPS protocol, requires that we install SSL Certificates issued by some well-known and trusted Certification Authority (CA). Our email server software will also use these same SSL Certifcates to assert its identity to peer email servers like Gmail, Yahoo or Outlook.com. Traditionally SSL Certificates are issued after paying a fee ranging from CAD$ 100 to CAD$ 300 for 1 certificate. But <a href="https://letsencrypt.org/" target="_blank" rel="noopener">&#8220;Let&#8217;s Encrypt&#8221;</a> and a few other services provide free SSL certificates, the only down side is that these are valid for a few months only. Fortunately for us the process of renewing these &#8220;Let&#8217;s Encrypt&#8221; certificates can be automated by installing a software robotic agent (Bot) on the target computer.</p>
<p>In this section we will first configure Apache2 to use a temporary Self Signed SSL Certificate for HTTPS connections. Then we will install the &#8220;Let&#8217;s Encrypt&#8221; certificate renewal software bot, and use it to get a genuine CA issued SSL certificate valid for 3 months. We can rest assured that before the expiry of this 3 month period, the software bot will automatically renew and re-install it. Self Signed SSL Certificate gives a secure HTTPS connection but suffer from the problem that no well known CA has issued it. For this reason, all modern browsers complain and give security warnings to the visitors of your web site. This is not the case with the &#8220;Let&#8217;s Encrypt&#8221; issued certificate since &#8220;Let&#8217;s Encrypt&#8221; CA is trusted by modern browsers.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ cd /etc/apache2/sites-available
$ sudo nano somewhere.com.ssl.conf
</pre>
<div>Then in the &#8220;nano&#8221; editor type/copy-paste the following text and save it. This configuration is using a dummy self-signed SSL Certificate for now, which gets installed with Apache and OpenSSL:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">&lt;IfModule mod_ssl.c&gt;
&lt;VirtualHost somewhere.com:443&gt;
       Protocols http/1.1

       ServerAdmin webmaster@localhost
       ServerName somewhere.com
       DocumentRoot /var/www/html

       ErrorLog ${APACHE_LOG_DIR}/somewhere-com_error.log
       CustomLog ${APACHE_LOG_DIR}/somewhere-com_access.log combined

       SSLEngine on

       SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
       SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key

&lt;/VirtualHost&gt;
&lt;/IfModule&gt;
</pre>
<p>Then press CTRL+O to save the file, then press CTRL+X to exit nano editor. Then type the following commands in bash command line prompt:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo a2enmod ssl
$ sudo systemctl restart apache2
$ sudo a2ensite somewhere.com.ssl.conf
$ sudo systemctl restart apache2
$ sudo a2enmod headers
$ sudo systemctl restart apache2</pre>
<p>Line number 1 will enable SSL Module in Apache2 configuration. Line 2 will simply restart Apache2. Lines 3 and 4 enable the Self-Signed SSL Configuration for our website. We will see steps to use a genuine &#8220;Let&#8217;s Encrypt&#8221; SSL certificate in a the next paragraphs. If you open the site in browser now, then both URLs should be working, HTTP URL <strong><span style="text-decoration: underline;">http://somewhere.com</span></strong>, and HTTPS URL <span style="text-decoration: underline;"><strong>https://somewhere.com</strong></span> (HTTPS URL will currently show security alerts in Browser, until we fix the SSL in next paragraph). Please note that you should replace &#8220;somewhere.com&#8221; with the domain name you have registered in earlier steps. To visually check the current SSL Certificate use the steps shown in the following 6 screen shots.</p>
<figure id="attachment_2767" aria-describedby="caption-attachment-2767" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2767" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-300x255.png" alt="Browser page with self signed ssl - Showing alerts for now" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-with-self-signed-ssl.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2767" class="wp-caption-text">Browser page with self signed ssl &#8211; Showing alerts for now</figcaption></figure>
<figure id="attachment_2768" aria-describedby="caption-attachment-2768" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2768" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-300x255.png" alt="browser page - check ssl cert - step 03" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-03.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2768" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 03</figcaption></figure>
<figure id="attachment_2769" aria-describedby="caption-attachment-2769" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2769" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-300x255.png" alt="browser page - check ssl cert - step 04" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-04.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2769" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 04</figcaption></figure>
</div>
<div></div>
<div>
<figure id="attachment_2770" aria-describedby="caption-attachment-2770" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2770" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-300x255.png" alt="browser page - check ssl cert - step 05" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-05.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2770" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 05</figcaption></figure>
<figure id="attachment_2771" aria-describedby="caption-attachment-2771" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2771" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-300x255.png" alt="browser page - check ssl cert - step 06" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-06.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2771" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step 06</figcaption></figure>
<figure id="attachment_2772" aria-describedby="caption-attachment-2772" style="width: 300px" class="wp-caption aligncenter"><a href="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details.png"><img loading="lazy" decoding="async" class="size-medium wp-image-2772" src="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-300x255.png" alt="browser page - check ssl cert - step Last - Cert Details" width="300" height="255" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-300x255.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-600x510.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details-768x653.png 768w, https://andromedabay.ddns.net/wp-content/uploads/2023/08/browser-page-check-ssl-cert-step-Last-Cert-Details.png 968w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2772" class="wp-caption-text">browser page &#8211; check ssl cert &#8211; step Last &#8211; Cert Details</figcaption></figure>
</div>
<div>To install &#8220;Let&#8217;s Encrypt&#8221; SSL Certificates it is important that your home/office router ports 80 and 443 are open and port-forwarding configured as mentioned in the previous section. You can verify that your simple web page is visible on the public internet by using your cell phone (Disable Wifi in your cell phone and use Cellular Data to browse to your domain name Example http://somewhere.com).</div>
<div>First you will need to install &#8220;certbot&#8221;, which is a software agent that runs in the background and can install and renew certificates automatically. Use the following command to install it and read some basic help about it:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo apt install -y certbot python3-certbot-apache
$ sudo certbot --help</pre>
<p>To let certbot obtain a new SSL and also install it in your apache configuration use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo certbot --apache</pre>
<p>Following is a sample interactive session output for your reference.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@somewhere:/etc/apache2/sites-available$ sudo certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): your.email@youremail.provider.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: somewhere.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for somewhere.com


----- (FOLLOWING IS FAILURE OUTPUT WHEN YOU DO NOT HAVE A WORKING DOMAIN NAME SETUP) ------
----- (YOUR OUTPUT WILL BE DIFFERENT AND SUCCESFULL - IF ALL PREVIOUS STEPS WERE SETUP CORRECTLY) ------

Certbot failed to authenticate some domains (authenticator: apache). The Certificate Authority reported these problems:
  Domain: somewhere.com
  Type:   dns
  Detail: no valid A records found for somewhere.com; no valid AAAA records found for somewhere.com

Hint: The Certificate Authority failed to verify the temporary Apache configuration changes made by Certbot. Ensure that the listed domains point to this Apache server and that it is accessible from the internet.

Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
user01@somewhere:/etc/apache2/sites-available$</pre>
<p>When Certbot has succesfully installed the certifcate you can check in the SSL Configuration the location of where the 3 months valid SSL Certificate is stored. To see that just use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">user01@somewhere:/etc/apache2/sites-available$ sudo cat sigmaone.ddns.net-le-ssl.conf
&lt;IfModule mod_ssl.c&gt;
&lt;VirtualHost somewhere.com:443&gt;
    Protocols http/1.1

    ServerAdmin webmaster@localhost
    ServerName somewhere.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/somewhere_error.log
    CustomLog ${APACHE_LOG_DIR}/somewhere_access.log combined

    SSLEngine on

   ### SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
   ### SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    SSLCertificateFile /etc/letsencrypt/live/somewhere.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/somewhere.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
&lt;/VirtualHost&gt;
&lt;/IfModule&gt;
user01@somewhere:/etc/apache2/sites-available$
</pre>
<p>You can also browse to the URL https://somewhere.com</p>
</div>
<div>Now since you have a working SSL website, you can force a non SSL Connection to your website to switch to a secure SSL Connection. For this you will need to edit your <strong>/etc/apache2/sites-available/somewhere.com.conf</strong> file, like shown below:</div>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-highlight="10-15">&lt;VirtualHost somewhere.com:80&gt;
    Protocols http/1.1
    ServerAdmin webmaster@localhost
    ServerName somewhere.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/somewhere-com_error.log
    CustomLog ${APACHE_LOG_DIR}/somewhere-com_access.log combined
    
    RedirectMatch permanent ^/(.*)$ https://somewhere.com/$1
        
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =somewhere.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    
&lt;/VirtualHost&gt;</pre>
<p>&nbsp;</p>
</div>
<div></div>
<div></div>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="installation-postfix-dovecot" class="Top-Heading">Installation of Email Server Software (Postfix and Dovecot)</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="configure-email" class="Top-Heading">Configuration of your Email Server</h2>
<p>To check postfix log messages with our configurations, use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u postfix@-.service -f</pre>
<p>Press CTRL+C to stop following the logs, or do not use -f in the above command. To show only the log entries since the day before use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u postfix@-.service -S yesterday</pre>
<p>To save the log entries in a text file, use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u postfix@-.service -S yesterday &gt; /path/to/folder/postfix_log_excrept.log</pre>
<p>To view Dovecot logs use the command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$ sudo journalctl -u dovecot -f</pre>
<p>&nbsp;</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="configure-relay" class="Top-Heading">Configuration of Email Relay Provider &#8211; Incoming and Outgoing</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="dns-records" class="Top-Heading">DNS Records for Email</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="testing-email-setup" class="Top-Heading">Testing Email Setup</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="add-user-post-box" class="Top-Heading">Adding a New User Email Post Box</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="connect-android" class="Top-Heading">Connecting to your Email from Android Device</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="connect-pc" class="Top-Heading">Connection to your Email from PC &#8211; Windows Mail</h2>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>
<h2 id="further-reading" class="Top-Heading">Further Reading</h2>
<p><a href="https://upcloud.com/resources/tutorials/secure-postfix-using-lets-encrypt" target="_blank" rel="noopener">How to secure Postfix using Let’s Encrypt &#8211; UpCloud </a> &#8211;  <a href="https://upcloud.com/resources/tutorials/secure-postfix-using-lets-encrypt" target="_blank" rel="noopener">https://upcloud.com/resources/tutorials/secure-postfix-using-lets-encrypt</a>, Date Visited: August 1, 2023.</p>
<p><a href="https://www.linuxbabe.com/mail-server/install-dovecot-imap-server-debian" target="_blank" rel="noopener">Part 2: Install Dovecot IMAP server on Debian &amp; Enable TLS Encryption &#8211; LinuxBabe</a> &#8211; <a href="https://www.linuxbabe.com/mail-server/install-dovecot-imap-server-debian" target="_blank" rel="noopener">https://www.linuxbabe.com/mail-server/install-dovecot-imap-server-debian</a> , Date Visited: August 1, 2023</p>
<p><a href="https://tecadmin.net/install-dovecot-on-debian-10/" target="_blank" rel="noopener">How to Install Dovecot (POP/IMAP) on Debian 10 – TecAdmin</a> &#8211; <a href="https://tecadmin.net/install-dovecot-on-debian-10/" target="_blank" rel="noopener">https://tecadmin.net/install-dovecot-on-debian-10/</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.linuxbabe.com/mail-server/postfixadmin-create-virtual-mailboxes-debian">PostfixAdmin – Create Virtual Mailboxes on Debian 11/10 Mail Server (linuxbabe.com)</a> &#8211; <a href="https://www.linuxbabe.com/mail-server/postfixadmin-create-virtual-mailboxes-debian" target="_blank" rel="noopener">https://www.linuxbabe.com/mail-server/postfixadmin-create-virtual-mailboxes-debian</a> , Date Visited: August 21, 2024. Create Mail Boxes in MySQL/MariaDB</p>
<p><a href="https://www.youtube.com/watch?v=P5NeyiRPYiY" target="_blank" rel="noopener">Video &#8211; How to Install and Configure a Postfix Mail Server with Dovecot on Linux Ubuntu &#8211; YouTube</a> &#8211; <a href="https://www.youtube.com/watch?v=P5NeyiRPYiY" target="_blank" rel="noopener">https://www.youtube.com/watch?v=P5NeyiRPYiY</a> , Date Visited: August 1, 2023</p>
<p><a href="https://hetmanrecovery.com/recovery_news/how-to-install-and-configure-postfix-mail-server-with-dovecot-on-linux-ubuntu.htm" target="_blank" rel="noopener">Article &#8211; How to Install and Configure a Postfix Mail Server with Dovecot on Linux Ubuntu (hetmanrecovery.com)</a> &#8211; <a href="https://hetmanrecovery.com/recovery_news/how-to-install-and-configure-postfix-mail-server-with-dovecot-on-linux-ubuntu.htm" target="_blank" rel="noopener">https://hetmanrecovery.com/recovery_news/how-to-install-and-configure-postfix-mail-server-with-dovecot-on-linux-ubuntu.htm</a> , Date Visited: August 1, 2023</p>
<p><a href="https://opensource.apple.com/source/postfix/postfix-259/postfix/proto/STANDARD_CONFIGURATION_README.html" target="_blank" rel="noopener">Postfix Standard Configuration Examples (apple.com)</a> &#8211; <a href="https://opensource.apple.com/source/postfix/postfix-259/postfix/proto/STANDARD_CONFIGURATION_README.html" target="_blank" rel="noopener">https://opensource.apple.com/source/postfix/postfix-259/postfix/proto/STANDARD_CONFIGURATION_README.html</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.sbarjatiya.com/notes_wiki/index.php/Basics_of_postfix_server_configuration" target="_blank" rel="noopener">Basics of postfix server configuration &#8211; Notes_Wiki (sbarjatiya.com)</a> &#8211; <a href="https://www.sbarjatiya.com/notes_wiki/index.php/Basics_of_postfix_server_configuration" target="_blank" rel="noopener">https://www.sbarjatiya.com/notes_wiki/index.php/Basics_of_postfix_server_configuration</a> , Date Visited: August 1, 2023</p>
<p><a href="https://serverfault.com/questions/1026078/sending-and-receiving-mails-using-postfix-dovecot" target="_blank" rel="noopener">email &#8211; Sending and receiving mails using Postfix/Dovecot &#8211; Server Fault</a> &#8211; <a href="https://serverfault.com/questions/1026078/sending-and-receiving-mails-using-postfix-dovecot" target="_blank" rel="noopener">https://serverfault.com/questions/1026078/sending-and-receiving-mails-using-postfix-dovecot</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.serverwatch.com/guides/adding-users-and-aliases-for-postfix/" target="_blank" rel="noopener">How to Add Users and Aliases in Postfix | ServerWatch</a> &#8211; <a href="https://www.serverwatch.com/guides/adding-users-and-aliases-for-postfix/" target="_blank" rel="noopener">https://www.serverwatch.com/guides/adding-users-and-aliases-for-postfix/</a> , Date Visited: August 8, 2023</p>
<h3>Tools for Testing:</h3>
<p><a href="https://www.wormly.com/test-smtp-server" target="_blank" rel="noopener">Online Tool for testing SMTP Settings (wormly.com</a>) &#8211; <a href="https://www.wormly.com/test-smtp-server" target="_blank" rel="noopener">https://www.wormly.com/test-smtp-server</a> , Date Visited: August 1, 2023</p>
<p><a href="https://www.wormly.com/test-pop3-mail-server" target="_blank" rel="noopener">Online Tool for testing SSL POP3 Settings (wormly.com)</a> &#8211; <a href="https://www.wormly.com/test-pop3-mail-server" target="_blank" rel="noopener">https://www.wormly.com/test-pop3-mail-server</a> , Date Visited: August 1, 2023</p>
<p><a href="https://dmarcian.com/dkim-inspector/" target="_blank" rel="noopener">Online tool for inspecting DKIM Record (dmarcian.com)</a> &#8211; <a href="https://dmarcian.com/dkim-inspector/" target="_blank" rel="noopener">https://dmarcian.com/dkim-inspector/</a> , Date Visited: August 1, 2023</p>
<div><a href="#mycontents">Back to Contents List</a></div>
<p>&nbsp;</p>


		<div class=" twp-social-share  booster-clear">

						    <header class="twp-plugin-title twp-share-title">
			        <h2>Share</h2>
			    </header>
			
		    <div class="twp-share-container">
				<div class="twp-social-icons twp-social-facebook">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/'); "  href="https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">

													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z" /></svg></span>
				                                        <span class="twp-label-title">
				                                            Facebook				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-twitter">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://twitter.com/intent/tweet?text=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/'); "  href="https://twitter.com/intent/tweet?text=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Twitter				                                        </span>
												    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-pinterest">										<a class="twp-icon-holder" rel="nofollow" href="javascript:twp_be_pinterest()">
											<span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>				                                <span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Pinterest				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-linkedin">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://www.linkedin.com/shareArticle?mini=true&#038;title=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/'); "  href="http://www.linkedin.com/shareArticle?mini=true&#038;title=Home%20Email%20Server%20Setup%20with%20Personal%20Domain&#038;url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        LinkedIn				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-email">										<a class="twp-icon-holder" rel="nofollow"  href="mailto:?subject=:&amp;body= Home Email Server Setup with Personal Domain http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/">
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M0 3v18h24v-18h-24zm6.623 7.929l-4.623 5.712v-9.458l4.623 3.746zm-4.141-5.929h19.035l-9.517 7.713-9.518-7.713zm5.694 7.188l3.824 3.099 3.83-3.104 5.612 6.817h-18.779l5.513-6.812zm9.208-1.264l4.616-3.741v9.348l-4.616-5.607z" /></svg>				                                    </span>
				                                    <span class="twp-share-label twp-label-title">
				                                        Email				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-vk">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://vk.com/share.php?url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/&#038;caption=Home%20Email%20Server%20Setup%20with%20Personal%20Domain'); "  href="http://vk.com/share.php?url=http://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/&#038;caption=Home%20Email%20Server%20Setup%20with%20Personal%20Domain" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        VK				                                    </span>
												</span>
																					</a>
										</div>			</div>
		</div>

	]]></content:encoded>
					
					<wfw:commentRss>https://andromedabay.ddns.net/home-email-server-setup-with-personal-domain/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Kernel Build, Module/Driver Programming &#038; Kernel Headers &#8211; Debian Linux</title>
		<link>https://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/</link>
					<comments>https://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/#respond</comments>
		
		<dc:creator><![CDATA[Hammad Rauf]]></dc:creator>
		<pubDate>Tue, 17 Jan 2023 02:00:08 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kernel-Build]]></category>
		<category><![CDATA[Kernel-Headers]]></category>
		<category><![CDATA[Linux-Mint]]></category>
		<category><![CDATA[LMDE]]></category>
		<category><![CDATA[Module]]></category>
		<category><![CDATA[Module-Programming]]></category>
		<guid isPermaLink="false">https://andromedabay.ddns.net/?p=1260</guid>

					<description><![CDATA[I wanted to obtain the Source Code for Linux Kernel for my Debian installation, and build it just for the sake of curiosity. I will]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>7 Minute, 56 Second                </div>

            </div><p>I wanted to obtain the Source Code for Linux Kernel for my Debian installation, and build it just for the sake of curiosity. I will document here the steps I used for Kernel sources download, and build. I also explored writing a simple Module and loading/unloading it in the installed and running Kernel. You may wish to read <a title="Install Debian Linux on x86/AMD64 Computer with Latest Kernel" href="https://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/" target="_blank" rel="noopener">my older post</a> about how to install the Linux Mint Debian Edition (LMDE) with the latest Kernel binary image, before continuing.</p>
<h2><span style="text-decoration: underline;">Contents</span></h2>
<ul>
<li><a href="#debian-kernel-build">Debian Kernel Build</a></li>
<li><a href="#writing-simple-module">Writing a Simple Module</a></li>
<li><a href="#install-kernel-headers">Install Kernel Headers</a></li>
<li><a href="#further-reading">Further Reading</a></li>
</ul>
<h2 id="debian-kernel-build"><span style="text-decoration: underline;">Debian Kernel Build</span></h2>
<h4>Sub-Contents</h4>
<ul>
<li>What is Kernel?</li>
<li>What is Make?</li>
<li>Download Sources for Kernel and Configure for Build</li>
<li>Start the Build</li>
</ul>
<h4>What is Kernel?</h4>
<p>Kernel is the core system software in a Linux Operating System. It is responsible for managing system resources, such as memory and CPU allocation, and providing a bridge between application software and hardware. The kernel also provides services to user-space programs, such as system calls, and acts as an abstraction layer between the computer&#8217;s hardware and the software that runs on it. Linux Kernel is open source software, meaning that its Source Code is available publicly and can be easily downloaded, modified and compiled by anyone. It is mostly written in C/C++ programming languages.</p>
<h4>What is Make?</h4>
<p>The &#8220;make&#8221; tool is a program that is commonly used by C/C++ programmers to automate the process of building and compiling software. It uses a &#8220;makefile&#8221; (a simple text file containing a set of rules) to determine how to build the software. The &#8220;makefile&#8221; specifies how source code files are to be transformed into executable programs, and describes the dependencies between the source code files. When you run the &#8220;make&#8221; command, it reads the &#8220;makefile&#8221; and automatically builds the software in the correct order, using the appropriate commands to compile and link the source code files. This can save a lot of time and effort, as the &#8220;makefile&#8221; can be set up to automatically handle tasks such as dependency checking, parallel builds and it can also handle cross-compilation.<br />
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2435427972424429"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2435427972424429"
     data-ad-slot="3797637297"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<h4>Download Sources for Kernel and Configure for Build</h4>
<p>You will need to enable the sources repositories for LMDE Linux, so that it can locate the source code files for your version of the Kernel.</p>
<p>To enable the LMDE Installation to search for source code do the following:</p>
<p>OS Key (Or Start Menu) &#8211;&gt; Software Sources &#8211;&gt; Official Repositories &#8211;&gt; Enable (Source Code Repositories, Debug Symbols). {Screen Shot}</p>
<figure id="attachment_1283" aria-describedby="caption-attachment-1283" style="width: 931px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-1283 size-full" src="https://andromedabay.ddns.net/wp-content/uploads/2023/01/LMDE-SoftwareSources-Source-code-repositories.png" alt="LMDE - Dialog Box for Software-Sources - Code Repositories enabled" width="931" height="534" srcset="https://andromedabay.ddns.net/wp-content/uploads/2023/01/LMDE-SoftwareSources-Source-code-repositories.png 931w, https://andromedabay.ddns.net/wp-content/uploads/2023/01/LMDE-SoftwareSources-Source-code-repositories-600x344.png 600w, https://andromedabay.ddns.net/wp-content/uploads/2023/01/LMDE-SoftwareSources-Source-code-repositories-300x172.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2023/01/LMDE-SoftwareSources-Source-code-repositories-768x441.png 768w" sizes="auto, (max-width: 931px) 100vw, 931px" /><figcaption id="caption-attachment-1283" class="wp-caption-text">LMDE &#8211; Dialog Box for Software-Sources &#8211; Code Repositories enabled</figcaption></figure>
<p>Use the following sequence of commands to download Debian Linux source code</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">cd ~/Downloads
sudo apt-get install build-essential fakeroot rsync git
sudo apt-get build-dep linux
apt-get source linux
cd linux-version
# OR
cd linux-6.0.12</pre>
<h4>Start the Build</h4>
<p>Use the following commands to start the Build process. Once started it can take several hours to compile the Kernel.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">cd ~/Downloads/linux-version
## OR
cd ~/Downloads/linux-6.0.12

debian/rules orig
debian/rules debian/control


## Make Changes in Loaded Modules, etc. OR Just examine only....
make menuconfig
# OR
# make all
# make nconfig
# make xconfig, etc.

## NOW COMPILE
fakeroot debian/rules binary

</pre>
<h2 id="writing-simple-module"><span style="text-decoration: underline;">Writing a Simple Module</span></h2>
<h4>Sub-Contents</h4>
<ul>
<li>What is a Module?</li>
<li>Sample Hello Message Module Code</li>
<li>Compile Module</li>
<li>Load and Unload Module</li>
</ul>
<h4>What is a Module?</h4>
<p>In Linux kernel, a module is a piece of code that can be loaded and unloaded into the kernel at runtime. This allows the kernel to be extended and modified without having to be completely rebuilt. Modules are typically used to add support for new hardware devices or to provide new kernel functionality.</p>
<p>Each module has its own set of functions and data structures that can be accessed by other parts of the kernel. When a module is loaded, it is given a unique identifier and added to a list of currently loaded modules. Once a module is loaded, it can be used by other parts of the kernel and can also register itself to be notified of certain events or to receive certain data.</p>
<p>Modules can be loaded and unloaded using the &#8220;insmod&#8221; and &#8220;rmmod&#8221; commands, respectively. The kernel also provide a feature called &#8220;Kernel Probes&#8221; which allows for dynamic instrumentation of the kernel, and can be used for tracing, debugging and performance analysis.</p>
<p>The module also have their own versioning, dependencies and license information, which can be queried using the &#8220;modinfo&#8221; command.</p>
<h4>Sample Hello Message Module Source Code</h4>
<p>The following C source code defines a simple &#8220;Hello World!&#8221; type basic module, that is actually doing nothing more than demonstrating how modules can be compiled and loaded in Linux kernel.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="cpp">// Save as filename: hello.c

#include &lt;linux/init.h&gt;
#include &lt;linux/module.h&gt;

// Module metadata
MODULE_AUTHOR("Hammad Rauf");
MODULE_DESCRIPTION("Hello world Module.");
MODULE_LICENSE("GPL");

static int hello_init(void)
{
        printk(KERN_INFO "Hello, world! The Module has been loaded.\n");
        return 0;
}
static void hello_exit(void)
{
        printk(KERN_INFO "Goodbye, cruel world. Module unloading.\n");
}

module_init(hello_init);
module_exit(hello_exit);</pre>
<p>The following &#8220;Makefile&#8221; will take care of compiling this module properly. You will need to download and install Linux Kernel Headers (See the next section in this post), before issuing the make command.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">obj-m += hello.o

PWD=$(shell pwd)
VER=$(shell uname -r)
KERNEL_BUILD=/lib/modules/$(VER)/build


all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean</pre>
<p>Make sure that the above 2 files are saved in one folder.</p>
<h4>Compile A Module</h4>
<p>To compile the sample Module change into the folder where you copied the files from previous sub-section. Then type the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">make
# OR
make all</pre>
<p>In case of errors you may want to delete all generated files by issuing the command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">make clean</pre>
<h4>Load and Unload Module</h4>
<p>In Debian Linux, you can load a kernel module using the &#8220;modprobe&#8221; command. The &#8220;modprobe&#8221; command is used to add or remove a module from the Linux kernel.</p>
<p>To load a module, you can use the following syntax:</p>
<div class="bg-black mb-4 rounded-md">
<div class="p-4 overflow-y-auto">
<pre class="EnlighterJSRAW" data-enlighter-language="bash">sudo modprobe MODULE_NAME</pre>
<p>For example, to load the &#8220;hello&#8221; module, you would use the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">sudo modprobe hello</pre>
<p>Alternatively, you can use the &#8220;insmod&#8221; command, which is the older command to insert modules into the kernel, but it is less recommended than &#8220;modprobe&#8221; because it does not handle dependencies and other configurations.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">sudo insmod /path/to/MODULE_NAME.ko</pre>
<p>Once a module is loaded, you can check if it is loaded by using the &#8220;lsmod&#8221; command, which displays the status of modules in the Linux kernel.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">lsmod | grep MODULE_NAME</pre>
<p>You can also use the &#8220;modinfo&#8221; command to get information about a module, such as the version, author, and description.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">modinfo MODULE_NAME</pre>
<p>Please note that you need to have root privilege or use &#8220;sudo&#8221; command to execute the above commands.</p>
</div>
</div>
<h2 id="install-kernel-headers"><span style="text-decoration: underline;">Install Kernel Headers</span></h2>
<h4>Sub-Contents</h4>
<ul>
<li>What are Kernel Headers and Why are they needed?</li>
<li>Installing the Kernel Headers</li>
</ul>
<h4>What are Kernel Headers and Why are they needed?</h4>
<p>Linux kernel headers are a collection of header files that provide the interface between the Linux kernel and user-space programs. These header files define the data structures, macros, and function prototypes that are used by the kernel and by the system libraries that provide system calls to user-space programs. Header files are a way for C/C++ programmers to package <em>source code data definitions</em> and <em>source code instructions</em> separately from each other. One of the uses of Header files,  by using Header files source code instructions can be changed easily by programmers, while the Headers (source code data definitions) remain unchanged, and in turn may not break other dependent parts of the Operating System.</p>
<p>The headers are typically located in the &#8220;/usr/src/linux-headers-version-architecture&#8221; directory, where version is the version of the kernel and architecture is the architecture of the system (e.g. x86_64, amd64, arm64, etc.).</p>
<p>These headers are used by developers to write kernel modules, device drivers, and other software that needs to interact with the kernel. They are also used by system libraries and user-space programs that need to make system calls to the kernel. When compiling custom Linux Kernel Modules, you will be needed Kernel Headers on your local Linux installation.</p>
<p>The headers are also used when building the kernel module, and are required to build some other software such as VirtualBox, VMware, and nvidia graphics driver that need to interact with kernel.</p>
<h4>Installing the Kernel Headers</h4>
<p>You can install the headers package for your specific version of the kernel by using package manager of your Linux distribution, for example in Ubuntu or Debian you can use the command</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">sudo apt-get install linux-headers-$(uname -r)</pre>
<h2 id="further-reading"><span style="text-decoration: underline;">Further Reading</span></h2>
<ol>
<li><a href="https://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/" target="_blank" rel="noopener">https://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/</a>, Install LMDE on a x86/AMD64 computer with latest Kernel binary, Date Accessed: January 1, 2023</li>
<li><a href="https://www.debian.org/doc/manuals/debian-kernel-handbook/ch-common-tasks.html" target="_blank" rel="noopener">https://www.debian.org/doc/manuals/debian-kernel-handbook/ch-common-tasks.html</a>, Debian Kernel Handbook &#8211; Common Tasks, Date Accessed: January 16, 2023</li>
<li><a href="https://medium.com/dvt-engineering/how-to-write-your-first-linux-kernel-module-cf284408beeb" target="_blank" rel="noopener">https://medium.com/dvt-engineering/how-to-write-your-first-linux-kernel-module-cf284408beeb</a>, How to write your first linux kernel module, Date Accessed: January 16, 2023</li>
<li><a href="https://stackoverflow.com/questions/3140478/fatal-module-not-found-error-using-modprobe" target="_blank" rel="noopener">https://stackoverflow.com/questions/3140478/fatal-module-not-found-error-using-modprobe</a> StackOverflow Question Example Module, Date Accessed: January 16, 2023</li>
</ol>


		<div class=" twp-social-share  booster-clear">

						    <header class="twp-plugin-title twp-share-title">
			        <h2>Share</h2>
			    </header>
			
		    <div class="twp-share-container">
				<div class="twp-social-icons twp-social-facebook">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/'); "  href="https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">

													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z" /></svg></span>
				                                        <span class="twp-label-title">
				                                            Facebook				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-twitter">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://twitter.com/intent/tweet?text=Kernel%20Build,%20Module/Driver%20Programming%20&#038;%20Kernel%20Headers%20&#8211;%20Debian%20Linux&#038;url=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/'); "  href="https://twitter.com/intent/tweet?text=Kernel%20Build,%20Module/Driver%20Programming%20&#038;%20Kernel%20Headers%20&#8211;%20Debian%20Linux&#038;url=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Twitter				                                        </span>
												    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-pinterest">										<a class="twp-icon-holder" rel="nofollow" href="javascript:twp_be_pinterest()">
											<span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>				                                <span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Pinterest				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-linkedin">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://www.linkedin.com/shareArticle?mini=true&#038;title=Kernel%20Build,%20Module/Driver%20Programming%20&#038;%20Kernel%20Headers%20&#8211;%20Debian%20Linux&#038;url=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/'); "  href="http://www.linkedin.com/shareArticle?mini=true&#038;title=Kernel%20Build,%20Module/Driver%20Programming%20&#038;%20Kernel%20Headers%20&#8211;%20Debian%20Linux&#038;url=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        LinkedIn				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-email">										<a class="twp-icon-holder" rel="nofollow"  href="mailto:?subject=:&amp;body= Kernel Build, Module/Driver Programming &#038; Kernel Headers &#8211; Debian Linux http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/">
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M0 3v18h24v-18h-24zm6.623 7.929l-4.623 5.712v-9.458l4.623 3.746zm-4.141-5.929h19.035l-9.517 7.713-9.518-7.713zm5.694 7.188l3.824 3.099 3.83-3.104 5.612 6.817h-18.779l5.513-6.812zm9.208-1.264l4.616-3.741v9.348l-4.616-5.607z" /></svg>				                                    </span>
				                                    <span class="twp-share-label twp-label-title">
				                                        Email				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-vk">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://vk.com/share.php?url=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/&#038;caption=Kernel%20Build,%20Module/Driver%20Programming%20&#038;%20Kernel%20Headers%20&#8211;%20Debian%20Linux'); "  href="http://vk.com/share.php?url=http://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/&#038;caption=Kernel%20Build,%20Module/Driver%20Programming%20&#038;%20Kernel%20Headers%20&#8211;%20Debian%20Linux" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        VK				                                    </span>
												</span>
																					</a>
										</div>			</div>
		</div>

	]]></content:encoded>
					
					<wfw:commentRss>https://andromedabay.ddns.net/kernel-build-simple-module-driver-programming-kernel-headers-debian-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Install Debian Linux on x86/AMD64 Computer with Latest Kernel</title>
		<link>https://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/</link>
					<comments>https://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/#comments</comments>
		
		<dc:creator><![CDATA[Hammad Rauf]]></dc:creator>
		<pubDate>Sat, 31 Dec 2022 03:20:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Kernel Update]]></category>
		<category><![CDATA[LMDE]]></category>
		<category><![CDATA[Mint]]></category>
		<guid isPermaLink="false">https://andromedabay.ddns.net/?p=1227</guid>

					<description><![CDATA[Disclaimer: These instructions are tested on my computer system and software, your computer system and software may be different. These instructions are meant to document]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>8 Minute, 22 Second                </div>

            </div><blockquote><p><em><strong>Disclaimer:</strong> These instructions are tested on my computer system and software, your computer system and software may be different. These instructions are meant to document my update process. You may use them for your installation, at your own risk.</em></p></blockquote>
<p>Debian (<a href="https://www.debian.org/intro/why_debian" target="_blank" rel="noopener">Why Debian?</a>) is a distribution of the free Linux Operating system. It is core distribution on which <a href="https://ubuntu.com/download/desktop" target="_blank" rel="noopener">Ubuntu</a>, <a href="https://kubuntu.org/getkubuntu/" target="_blank" rel="noopener">Kubuntu</a>, <a href="https://www.raspberrypi.com/software/" target="_blank" rel="noopener">RaspberryPi OS</a>, and many other distributions are based. It makes sense to work on a Debian installation, because this way your work should be mostly compatible with Ubuntu, Raspberry Pi, etc.</p>
<p><a href="https://linuxmint.com/" target="_blank" rel="noopener">Linux-Mint</a> is well known Ubuntu based Linux Distribution which uses Windows like Cinnamon Desktop. Linux-Mint has another similar distribution based on Debian, the core on which Ubuntu is based, it is called <a href="https://linuxmint.com/download_lmde.php" target="_blank" rel="noopener">LMDE</a>. LMDE is short for &#8220;Linux Mint Debian Edition&#8221;. Its current version is 5, LMDE 5 &#8220;Elsie&#8221;. In this blog I will be describing how I installed it on my computer.</p>
<h3>Contents</h3>
<ul>
<li><a href="#download-iso">Download ISO</a></li>
<li><a href="#bootable-usb">Bootable USB</a></li>
<li><a href="#installation">Installation</a></li>
<li><a href="#update-installation">Update Installation</a></li>
<li><a href="#update-kernel">Update Kernel</a></li>
<li><a href="#fix-update-manager">Fix Update Manager</a></li>
<li><a href="#reference">References</a></li>
</ul>
<ol start="1">
<li id="download-iso">
<h3>Download the ISO Image</h3>
</li>
</ol>
<p>The ISO Image Installation file of the LMDE can be downloaded from the <a href="https://linuxmint.com/edition.php?id=297" target="_blank" rel="noopener">LMDE Download Page</a>. Either use the direct Download mirror sites close to your location or use a Torrent downloading client like BitTorrent/uTorrent. You have the option to choose 64-bit or 32-bit version. Since I had a fairly new computer, I downloaded the 64-bit version.</p>
<ol start="2">
<li id="bootable-usb">
<h3>Burn a Bootable USB Disk</h3>
</li>
</ol>
<p>Next we need to have a bootable installation media. Since my computer had the capability to boot from a USB stick I created a bootable USB stick with LMDE image file. Other options are to create a bootable CR/DVD ROM, if you have an internal or External DVD drive available.</p>
<p>To create the bootable USB Stick I downloaded <a href="https://www.balena.io/etcher/" target="_blank" rel="noopener">Etcher (Bootable USB Creator) from the  Download Page</a>. Install Etcher. Once Installed launch Etcher, provide the path to the downloaded ISO file as the source, the destination must be your USB Thumb drive. Burn the image and let it complete. Once it is completed, you can close Etcher.</p>
<ol start="3">
<li id="installation">
<h3>Installation</h3>
</li>
</ol>
<p>I had a spare Hard Disk (256 GB) available to me that was not being used for anything else. So I decided to keep my Windows 11 and LMDE on separate disks, and install LMDE on the 256 GB Hard Disk. Although Linux and Windows 11 can be installed on the same disk also, but I would recommend separate disk. It will be much easier to boot into either one, Windows or LMDE by using the boot sequence hot key (F11, F2, DEL  Keys etc.) during the boot process. The disk size can be as small as 32GB but I would recommend a 64GB hard disk or SSD.</p>
<p>Insert the bootable USB disk in the computer and reboot or start the computer. You may have to press the boot sequence hot key (F11, F2, DEL  Keys etc.) during the boot process, to select the USB disk and boot from it. Once the LMDE starts up, play around and the Menu&#8217;s and applications. Nothing is installed yet on your computer, it is loading everything from the USB stick.</p>
<p>Once you are ready to install, click on the CD ROM Icon on the desktop that says &#8211; &#8220;Install Linux Mint&#8221;. This will start the permanent installation of LMDE on your computer. The rest of the installation process is somewhat similar to the <a href="https://linuxmint-installation-guide.readthedocs.io/en/latest/install.html" target="_blank" rel="noopener">Linux-Mint Installation Steps</a> documented on the Linux-Mint website. Once you have installed it please continue with the next steps given below.</p>
<p>During the Installation if you are installing on a Computer that already has another Operating System like Windows 11 installed on it, you will get an additional prompt for installing GRUB. GRUB is a Boot Loader that lets you choose which OS to boot your computer to. You have the option to install it on either disk/SSD, the disk for LMDE or the Disk for Windows 11 (It does not damage Windows 11 installation). I would recommend installing it on the LMDE disk/SSD. You can also choose not to install GRUB, but then during EFI Boot process the LMDE disk/SSD may not be detected, and you may need to run &#8220;Boot Repair&#8221; from the Live LMDE USB stick you prepared earlier. You can use &#8220;Boot Repair&#8221; and/or &#8220;GRUB Customizer&#8221; to tailor GRUB as per your liking later.</p>
<p>The found out out that there was no direct way of updating my Graphics Driver and Sound Driver, and the instructions given for Linux-Mint do not match the LMDE distribution. The only way forward as suggested on the <a href="https://forums.linuxmint.com/viewtopic.php?f=248&amp;t=370744" target="_blank" rel="noopener">help forum</a> was to update the Linux Kernel. It is documented below.</p>
<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2435427972424429"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2435427972424429"
     data-ad-slot="3797637297"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<h4>Time Adjustment on Dual OS Systems</h4>
<p>On Computer systems where Windows 11 is also installed the System Clock time is altered by LMDE every time you boot into that. To prevent that from happening, open a Terminal (Console) session. and type the following command:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">timedatectl set-local-rtc 1</pre>
<ol start="4">
<li id="update-installation">
<h3>Update the Installation</h3>
</li>
</ol>
<p>In these steps we will be installing the absolutely latest version of Debian Kernel available. This version of kernel is usually not supported by the LMDE distribution. But we want to install it  anyway because our computer Device Drivers are not working properly.</p>
<p>Before you start updating the kernel, it is a good idea to update the installation of LMDE. Just click on the Shield Icon (LMDE Update Manager) in the lower right corner next to the system clock. Make sure everything is selected, and then let it run. It will download all updates (including a slightly newer Kernel image), and install them. You will have to reboot the computer after updates are installed. The Kernel image installed by the update manager is not the latest kernel image available, so it may not solve your driver issues. Follow the steps in the next section to explicitly download the latest kernel.</p>
<figure id="attachment_1256" aria-describedby="caption-attachment-1256" style="width: 300px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-medium wp-image-1256" src="https://andromedabay.ddns.net/wp-content/uploads/2022/12/LMDE-Update-Manager-Icons-300x58.png" alt="LMDE Update Manager Icons" width="300" height="58" srcset="https://andromedabay.ddns.net/wp-content/uploads/2022/12/LMDE-Update-Manager-Icons-300x58.png 300w, https://andromedabay.ddns.net/wp-content/uploads/2022/12/LMDE-Update-Manager-Icons.png 513w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-1256" class="wp-caption-text">LMDE Update Manager Icons</figcaption></figure>
<ol start="5">
<li id="update-kernel">
<h3>Update the Kernel</h3>
</li>
</ol>
<p>To install the latest Kernel version available for LMDE perform the following steps on a Terminal Console screen, one step at a time.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">uname -r
uname -n
uname -a</pre>
<p>The above 3 commands will list the name and version of the currently installed LMDE Kernel version and Computer name. This information will be useful in determining which newer version of Kernel to install in the next steps.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo apt update
sudo apt search linux-image</pre>
<p>The first command updates all repositories for the package manager. The Second command shows all packages that can be installed with the words &#8220;linux-image&#8221; which marks Kernel images. You will see a list of many available kernel images. At the time of this writing, for a Intel/AMD based CPU the kernel image that determined to be the latest is &#8220;linux-image-6.0.0-0.deb11.2-amd64&#8221;. So you can issue the command to install it, and then reboot your system with the next command given.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo apt install linux-image-6.0.0-0.deb11.2-amd64
sudo reboot</pre>
<p>Hopefully everything works out and you are able to log back in to LMDE. All your Device Driver issues should be resolved now, since you are running the latest kernel available. To check that your kernel is indeed the latest one type the following commands.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">uname -r
uname -n
uname -a</pre>
<ol start="6">
<li id="fix-update-manager">
<h3>Force Update Manger to Show Latest Kernel Images</h3>
</li>
</ol>
<p>LMDE Update Manager is a very nice tool that automatically finds the latest updates for all software packages installed on your system and prompts you for installing them periodically. But there can be an issue with that now since you have updated the kernel version to be the absolutely latest version. The official LMDE distribution is still using an older Kernel version. So when the official LMDE distribution starts supporting a slightly newer version of the kernel, which is slightly newer but still older then the version of the kernel you have already installed in above steps, you will be prompted to install it. This is not a big issue, you can always uncheck that version of the kernel from the list of software to be updated. But an interesting trick was mention on <a href="https://www.linuxcapable.com/how-to-install-linux-kernel-mainline-on-debian-11-bullseye/" target="_blank" rel="noopener">this site</a>. I am documenting it below.</p>
<p>Use a text editor  (with &#8220;sudo&#8221; privileges) to create a file &#8220;preferences&#8221; with the following contents in the folder /etc/apt/.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">Package: *
Pin: release a=bullseye
Pin-Priority: 500

Package: linux-image-amd64
Pin:release a=unstable
Pin-Priority: 1000

Package: *
Pin: release a=unstable
Pin-Priority: 100</pre>
<p>Alternatively you can use the following command from Terminal/Console to do the above directly from command line.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo tee /etc/apt/preferences&lt;&lt;EOF
Package: *
Pin: release a=bullseye
Pin-Priority: 500

Package: linux-image-amd64
Pin:release a=unstable
Pin-Priority: 1000

Package: *
Pin: release a=unstable
Pin-Priority: 100
EOF
</pre>
<p>Afterwards make sure that the file contents are like we expect. To confirm use the following command from Terminal/Console.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo cat /etc/apt/preferences</pre>
<p>&nbsp;</p>
<ol start="7">
<li id="reference">
<h3>Reference Links</h3>
</li>
</ol>
<ul>
<li><i><a href="https://www.debian.org/intro/why_debian" target="_blank" rel="noopener">https://www.debian.org/intro/why_debian</a>, Why Debian?, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://ubuntu.com/download/desktop" target="_blank" rel="noopener">https://ubuntu.com/download/desktop</a>, Ubuntu Desktop, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://kubuntu.org/getkubuntu/" target="_blank" rel="noopener">https://kubuntu.org/getkubuntu/</a>, Kubuntu, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://www.raspberrypi.com/software/" target="_blank" rel="noopener">https://www.raspberrypi.com/software/</a>, RaspberryPi OS, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://linuxmint.com/" target="_blank" rel="noopener">https://linuxmint.com/</a>, Linux-Mint, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://linuxmint.com/download_lmde.php" target="_blank" rel="noopener">https://linuxmint.com/download_lmde.php</a>, LMDE, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://linuxmint.com/edition.php?id=297" target="_blank" rel="noopener">https://linuxmint.com/edition.php?id=297</a>, LMDE Download Page, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://www.balena.io/etcher/" target="_blank" rel="noopener">https://www.balena.io/etcher/</a>, Etcher (Bootable USB Creator) Download Page, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://linuxmint-installation-guide.readthedocs.io/en/latest/install.html" target="_blank" rel="noopener">https://linuxmint-installation-guide.readthedocs.io/en/latest/install.html</a>, Linux-Mint Installation Steps, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://forums.linuxmint.com/viewtopic.php?f=248&amp;t=370744" target="_blank" rel="noopener">https://forums.linuxmint.com/viewtopic.php?f=248&amp;t=370744</a>, Author&#8217;s LMDE Forum Support Question for Drivers, Date Accessed: December 30, 2022</i></li>
<li><i><a href="https://www.linuxcapable.com/how-to-install-linux-kernel-mainline-on-debian-11-bullseye/" target="_blank" rel="noopener">https://www.linuxcapable.com/how-to-install-linux-kernel-mainline-on-debian-11-bullseye/</a>, Update Kernel, Date Accessed: December 30, 2022</i></li>
</ul>


		<div class=" twp-social-share  booster-clear">

						    <header class="twp-plugin-title twp-share-title">
			        <h2>Share</h2>
			    </header>
			
		    <div class="twp-share-container">
				<div class="twp-social-icons twp-social-facebook">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/'); "  href="https://www.facebook.com/sharer/sharer.php?u=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">

													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z" /></svg></span>
				                                        <span class="twp-label-title">
				                                            Facebook				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-twitter">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'https://twitter.com/intent/tweet?text=Install%20Debian%20Linux%20on%20x86/AMD64%20Computer%20with%20Latest%20Kernel&#038;url=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/'); "  href="https://twitter.com/intent/tweet?text=Install%20Debian%20Linux%20on%20x86/AMD64%20Computer%20with%20Latest%20Kernel&#038;url=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/" >
			                                <span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>												<span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Twitter				                                        </span>
												    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-pinterest">										<a class="twp-icon-holder" rel="nofollow" href="javascript:twp_be_pinterest()">
											<span class="twp-social-count"><span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M 23.25 9 L 15 9 L 15 0.75 C 15 0.335938 14.664062 0 14.25 0 L 9.75 0 C 9.335938 0 9 0.335938 9 0.75 L 9 9 L 0.75 9 C 0.335938 9 0 9.335938 0 9.75 L 0 14.25 C 0 14.664062 0.335938 15 0.75 15 L 9 15 L 9 23.25 C 9 23.664062 9.335938 24 9.75 24 L 14.25 24 C 14.664062 24 15 23.664062 15 23.25 L 15 15 L 23.25 15 C 23.664062 15 24 14.664062 24 14.25 L 24 9.75 C 24 9.335938 23.664062 9 23.25 9 Z M 23.25 9" /></svg></span></span>				                                <span class="twp-share-media">
													<span class="twp-share-label">
                                                        <span class="booster-svg-icon"><svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2"></path></svg></span>
				                                        <span class="twp-label-title">
				                                            Pinterest				                                        </span>
				                                    </span>
												</span>
																					</a>
									</div><div class="twp-social-icons twp-social-linkedin">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://www.linkedin.com/shareArticle?mini=true&#038;title=Install%20Debian%20Linux%20on%20x86/AMD64%20Computer%20with%20Latest%20Kernel&#038;url=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/'); "  href="http://www.linkedin.com/shareArticle?mini=true&#038;title=Install%20Debian%20Linux%20on%20x86/AMD64%20Computer%20with%20Latest%20Kernel&#038;url=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        LinkedIn				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-email">										<a class="twp-icon-holder" rel="nofollow"  href="mailto:?subject=:&amp;body= Install Debian Linux on x86/AMD64 Computer with Latest Kernel http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/">
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M0 3v18h24v-18h-24zm6.623 7.929l-4.623 5.712v-9.458l4.623 3.746zm-4.141-5.929h19.035l-9.517 7.713-9.518-7.713zm5.694 7.188l3.824 3.099 3.83-3.104 5.612 6.817h-18.779l5.513-6.812zm9.208-1.264l4.616-3.741v9.348l-4.616-5.607z" /></svg>				                                    </span>
				                                    <span class="twp-share-label twp-label-title">
				                                        Email				                                    </span>
												</span>
																					</a>
										</div><div class="twp-social-icons twp-social-vk">										<a class="twp-icon-holder" rel="nofollow"  onclick="twp_be_popup_new_window( event,'http://vk.com/share.php?url=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/&#038;caption=Install%20Debian%20Linux%20on%20x86/AMD64%20Computer%20with%20Latest%20Kernel'); "  href="http://vk.com/share.php?url=http://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/&#038;caption=Install%20Debian%20Linux%20on%20x86/AMD64%20Computer%20with%20Latest%20Kernel" >
																							<span class="twp-share-media">
				                                    <span class="share-media-nocount">
													    <svg class="booster-svg" aria-hidden="true" role="img" focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="currentColor" d="M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z"></path></svg>				                                    </span>
													<span class="twp-share-label twp-label-title">
				                                        VK				                                    </span>
												</span>
																					</a>
										</div>			</div>
		</div>

	]]></content:encoded>
					
					<wfw:commentRss>https://andromedabay.ddns.net/install-debian-linux-on-x86-amd64-computer/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: andromedabay.ddns.net @ 2026-04-07 14:13:24 by W3 Total Cache
-->