{"id":209,"date":"2022-05-04T13:02:53","date_gmt":"2022-05-04T20:02:53","guid":{"rendered":"https:\/\/www.cmsws.com\/blog\/?page_id=209"},"modified":"2023-05-30T13:06:55","modified_gmt":"2023-05-30T20:06:55","slug":"install-freeside-v4-x","status":"publish","type":"page","link":"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/","title":{"rendered":"Install Freeside v4.X"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Preparing_the_base_server\"><\/span>Preparing the base server<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Install Debian 9 (stretch) server with SSH (Unselect Desktop Install, Select SSH server)<\/li>\n\n\n\n<li>login as root<\/li>\n\n\n\n<li>apt update &amp;&amp; apt upgrade &amp;&amp; apt-get autoremove &amp;&amp; apt-get autoclean<\/li>\n\n\n\n<li>apt install sudo<\/li>\n\n\n\n<li>adduser username &#8212; add a system user<\/li>\n\n\n\n<li>usermod -aG sudo username<\/li>\n<\/ul>\n\n\n\n<p>Connect over ssh or through the terminal as your normal linux system user and continue with the install.<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-right counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Preparing_the_base_server\" >Preparing the base server<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Configure_Freeside_repos\" >Configure Freeside repos<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Debian_9_stretch\" >Debian 9 (stretch)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Debian_10_buster\" >Debian 10 (buster)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Administrative_package_setup_non-Freeside\" >Administrative package setup (non-Freeside)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Install_Freeside_Packages\" >Install Freeside Packages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Setup_Postgres\" >Setup Postgres<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Bootstrap_RT\" >Bootstrap RT<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Configure_required_settings_for_Request_Tracker_RT\" >Configure required settings for Request Tracker (RT)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Bootstrap_Freeside\" >Bootstrap Freeside<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Setup_Apache\" >Setup Apache<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.cmsws.com\/blog\/freeside-wisp-billing-software-platform\/install-freeside-v4-x\/#Finish_installation\" >Finish installation<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configure_Freeside_repos\"><\/span>Configure Freeside repos<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">$ sudo vi \/etc\/apt\/sources.list<\/pre>\n\n\n\n<p>Copy\/Paste:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Debian_9_stretch\"><\/span>Debian 9 (stretch)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"># Freeside Repos\ndeb [trusted=yes] <a href=\"http:\/\/pkg.freeside.biz\/freeside-stretch\/\">http:\/\/pkg.freeside.biz\/freeside-stretch\/<\/a> .\/\ndeb [trusted=yes] <a href=\"http:\/\/pkg.freeside.biz\/freeside4-stretch-testing\/\">http:\/\/pkg.freeside.biz\/freeside4-stretch-testing\/<\/a> .\/<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Debian_10_buster\"><\/span>Debian 10 (buster)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"># Freeside Repos\ndeb [trusted=yes] <a href=\"http:\/\/pkg.freeside.biz\/freeside-buster\/\">http:\/\/pkg.freeside.biz\/freeside-buster\/<\/a> .\/\ndeb [trusted=yes] <a href=\"http:\/\/pkg.freeside.biz\/freeside4-stretch-testing\/\">http:\/\/pkg.freeside.biz\/freeside4-stretch-testing\/<\/a> .\/<\/pre>\n\n\n\n<p>Update and Upgrade system<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt update\nsudo apt upgrade<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Administrative_package_setup_non-Freeside\"><\/span>Administrative package setup (non-Freeside)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>I like to install a number of system system tools to make life a little easier:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install exim4- exim4-base- exim4-config- exim4-daemon-light- \\\n                 locate nano nmap rsync screen strace telnet traceroute<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Install_Freeside_Packages\"><\/span>Install Freeside Packages<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Install Freeside and required packages while preventing recommended packages from being installed.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install texlive-fonts-recommended-doc- texlive-latex-base-doc- texlive-latex-recommended-doc- \\\n                 texlive-latex-extra-doc- texlive-pictures-doc- texlive-pstricks-doc- libev-perl- \\\n                 liblocale-subcountry-perl=1.63-1 libparams-classify-perl=0.013-5.3 apache2-suexec-custom \\\n                 freeside freeside-lib freeside-webui<\/pre>\n\n\n\n<p>If you want to install a specific version of Freeside, view the list of all packages that have been generated and select a version. Adjust the line including the freeside package names accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">freeside=3.93~git-2019062510 freeside-lib=3.93~git-2019062510 freeside-webui=3.93~git-2019062510 \\<\/pre>\n\n\n\n<p>Place the Freeside and Freeside provided packages on &#8220;hold&#8221;. This prevents them from being upgraded when the system is upgraded while using apt or apt-get.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt-mark hold freeside freeside-lib freeside-webui liblocale-subcountry-perl libparams-classify-perl\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Setup_Postgres\"><\/span>Setup Postgres<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Create the freeside user in PostgreSQL<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su postgres -c \"createuser --createdb --no-createrole --no-superuser freeside\"<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Configure \/usr\/local\/etc\/freeside\/secrets if necessary. This file contains three lines: DBI datasource, username and password\n<ul class=\"wp-block-list\">\n<li>See the <a href=\"https:\/\/metacpan.org\/pod\/DBI\">DBI manpage<\/a> and the manpage for your DBD for the exact syntax of your DBI data source.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>As the freeside user in PostgreSQL, create the freeside database<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su freeside -c \"createdb -E UTF8 -T template0 freeside\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Bootstrap_RT\"><\/span>Bootstrap RT<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Run these one at a time and enter your password during each one:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su freeside -c '\/opt\/rt3\/sbin\/rt-setup-database --action schema'\nsudo su freeside -c '\/opt\/rt3\/sbin\/rt-setup-database --action coredata'\nsudo su freeside -c '\/opt\/rt3\/sbin\/rt-setup-database --action insert --datafile \/opt\/rt3\/etc\/initialdata'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configure_required_settings_for_Request_Tracker_RT\"><\/span>Configure required settings for Request Tracker (RT)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Open \/opt\/rt3\/etc\/RT_SiteConfig.pm and update or insert the following lines:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set rtname to your domain name (this is the same domain used with freeside-setup earlier)<\/li>\n\n\n\n<li>Set Organization to your company name<\/li>\n\n\n\n<li>Update Timezone<\/li>\n\n\n\n<li>Set RT::URI::freeside::URL to your local URL for Freeside<\/li>\n\n\n\n<li>Add the following lines:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">Set($WebPort, 443);\nSet($WebDomain, 'FQDN of their freeside server');<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Bootstrap_Freeside\"><\/span>Bootstrap Freeside<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If migrating then skip to the Setting up apache section<\/li>\n\n\n\n<li>Replace $DOMAIN with the customers domain, sets up database and temp permissions<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su freeside -c \"freeside-setup -d $DOMAIN\"<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add default Freeside system users<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su freeside -c \"freeside-adduser -g 1 fs_queue\"\nsudo su freeside -c \"freeside-adduser -g 1 fs_daily\"\nsudo su freeside -c \"freeside-adduser -g 1 fs_selfservice\"\nsudo su freeside -c \"freeside-adduser -g 1 fs_api\"<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add your user in<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su freeside -c \"freeside-adduser -g 1 {freeside_username} {temp password}\"\n<\/pre>\n\n\n\n<p><em><strong>after you log in for the first time reset your password using a more secure one<\/strong><\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Setup_Apache\"><\/span>Setup Apache<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Enable freeside-base configuration (Debian 9 and newer only)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo a2enconf freeside-base2.4<\/pre>\n\n\n\n<p>Enable remaining Apache modules and configuration<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo a2enconf freeside-rt\nsudo a2dismod mpm_event\nsudo a2enmod mpm_prefork\nsudo a2enmod rewrite\nsudo a2enmod perl\nsudo a2enmod ssl\nsudo chown freeside \/var\/lock\/apache2<\/pre>\n\n\n\n<p>Make a backup of your original \/etc\/apache2\/envvars file and modify user and group fields<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo cp \/etc\/apache2\/envvars \/etc\/apache2\/envvars.$(date +%s)\nsudo sed -i \"s\/www-data\/freeside\/g\" \/etc\/apache2\/envvars<\/pre>\n\n\n\n<p>Make a backup of your original \/etc\/apache2\/site-available\/000-default.conf file and make changes to the original file<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo cp \/etc\/apache2\/sites-available\/000-default.conf \/etc\/apache2\/sites-available\/000-default.conf.$(date +%s)<\/pre>\n\n\n\n<p>Add the following to the end of the default config file just before the closing &lt;\/VirtualHost&gt; block.<\/p>\n\n\n\n<p>sudo vi \/etc\/apache2\/sites-available\/000-default.conf<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\t&lt;Directory \/>\n                Options +FollowSymLinks\n                AllowOverride None\n        &lt;\/Directory>\n        &lt;Directory \/var\/www\/html>\n                Options +Indexes +FollowSymLinks +MultiViews\n                AllowOverride None\n                Order allow,deny\n                allow from all\n        &lt;\/Directory>\n\n        ScriptAlias \/cgi-bin\/ \/usr\/lib\/cgi-bin\/\n        &lt;Directory \"\/usr\/lib\/cgi-bin\">\n                AllowOverride None\n                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch\n                Order allow,deny\n                Allow from all\n        &lt;\/Directory>\n# you only need the following if you plan to run the server in a dedicated HTTPS connection\n# If you are not going to use HTTPS, you need to leave this part out of the config.\n        RewriteEngine   on\n        RewriteCond    \u00a0%{SERVER_PORT} ^80$\n        RewriteCond    \u00a0%{REMOTE_ADDR}\u00a0!^127.0.0.1$\n        RewriteCond    \u00a0%{REMOTE_ADDR}\u00a0!^\\:\\:1$\n        RewriteRule     ^\/(.*)$ https:\/\/%{SERVER_NAME}\/$1 [L,R]<\/pre>\n\n\n\n<p>Enable Default SSL site<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo a2ensite default-ssl<\/pre>\n\n\n\n<p>Enable suexec module for Apache<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo a2enmod suexec<\/pre>\n\n\n\n<p>Update Apache2 SSL config to execute https as the freeside system user. Add <em>SuexecUserGroup freeside freeside<\/em> inside the VirtualHost block.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo vi \/etc\/apache2\/sites-available\/default-ssl.conf<\/pre>\n\n\n\n<p>For an pre-built script that does all the above, copy\/paste the following into a script on your freeside server and run it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Finish_installation\"><\/span>Finish installation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Converts templates to msg_template<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su freeside -c \"freeside-upgrade freeside_username\"<\/pre>\n\n\n\n<p>Start Apache\/Freeside<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo systemctl start freeside\nsudo systemctl restart apache2<\/pre>\n\n\n\n<p>Login to the web interface, click on &#8220;Ticketing main&#8221;<\/p>\n\n\n\n<p>Bootstrap your RT Login, replace freeside_username with your freeside account name created above<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo su freeside -c psql\ninsert into acl ( principaltype, principalid, rightname, objecttype, objectid )\n         values ( 'Group',\n                 ( select id from groups where instance = ( select id from users where name = 'freeside_username' )\n                                           and domain = 'ACLEquivalence' and type = 'UserEquiv'        ),\n                  'SuperUser', 'RT::System', 1 );\n\\q<\/pre>\n\n\n\n<p>Change your password through the preferences link (you can change it to the same password)<\/p>\n\n\n\n<p>If you are planning to only use HTTPS, verify that remote access to UI is via 443 only<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Preparing the base server Connect over ssh or through the terminal as your normal linux system user and continue with the install. Configure Freeside repos $ sudo vi \/etc\/apt\/sources.list Copy\/Paste: Debian 9 (stretch) # Freeside Repos deb [trusted=yes] http:\/\/pkg.freeside.biz\/freeside-stretch\/ .\/ deb [trusted=yes] http:\/\/pkg.freeside.biz\/freeside4-stretch-testing\/ .\/ Debian 10 (buster) # Freeside Repos deb [trusted=yes] http:\/\/pkg.freeside.biz\/freeside-buster\/ .\/ deb [trusted=yes] http:\/\/pkg.freeside.biz\/freeside4-stretch-testing\/ .\/ Update and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":142,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-209","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/pages\/209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/comments?post=209"}],"version-history":[{"count":1,"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/pages\/209\/revisions"}],"predecessor-version":[{"id":210,"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/pages\/209\/revisions\/210"}],"up":[{"embeddable":true,"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/pages\/142"}],"wp:attachment":[{"href":"https:\/\/www.cmsws.com\/blog\/wp-json\/wp\/v2\/media?parent=209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}