Projekt

Allgemein

Profil

ERPNext14 » Historie » Version 28

Jeremias Keihsler, 24.08.2023 15:57

1 1 Jeremias Keihsler
h1. ERPNext 14
2
3
h2. Bitnami based on Debian 11
4
5
out of the box ERPNext is installed. This describes what else can/needs to be done:
6
7
h3. convert VirtualBox-ova to be used with KVM
8
9
untar @.ova@
10
11
<pre><code class="shell">
12
tar xvf bitnami-erpnext-14.11.0-0-linux-vm-debian-11-x86_64-nami.ova
13
</code></pre>
14
15
convert @.vmdk@ to @.qcow2@ while showing 'progress'
16
17
<pre><code class="shell">
18
qemu-img convert -p -f vmdk -O qcow2 \
19
  bitnami-erpnext-14.11.0-0-linux-vm-debian-11-x86_64-nami-disk1.vmdk \
20
  bitnami-erpnext-14.11.0-0-linux-vm-debian-11-x86_64-nami-disk1.qcow2
21
</code></pre>
22
23
this is a sample virsh dumpxml with a bridged interface
24
25
<pre><code class="xml">
26
<domain type="kvm" id="7">
27 2 Jeremias Keihsler
  <name>bitnami_erpnext</name>
28
  <uuid>acf57964-b3d8-4148-9391-b4552a72a32c</uuid>
29
  <metadata>
30
    <libosinfo:libosinfo>
31
    <libosinfo:os id="http://debian.org/debian/11"/>
32
    </libosinfo:libosinfo>
33
  </metadata>
34
  <memory unit="KiB">4194304</memory>
35
  <currentMemory unit="KiB">4194304</currentMemory>
36
  <vcpu placement="static">2</vcpu>
37
  <resource>
38
    <partition>/machine</partition>
39
  </resource>
40
  <os>
41
    <type arch="x86_64" machine="pc-i440fx-rhel7.0.0">hvm</type>
42
    <boot dev="hd"/>
43
    <bootmenu enable="yes"/>
44
  </os>
45
  <features>
46
    <acpi/>
47
    <apic/>
48
  </features>
49
  <cpu mode="host-passthrough" check="none">
50
    <topology sockets="1" cores="1" threads="2"/>
51
  </cpu>
52
  <clock offset="utc">
53
    <timer name="rtc" tickpolicy="catchup"/>
54
    <timer name="pit" tickpolicy="delay"/>
55
    <timer name="hpet" present="no"/>
56
  </clock>
57
  <on_poweroff>destroy</on_poweroff>
58
  <on_reboot>restart</on_reboot>
59
  <on_crash>destroy</on_crash>
60
  <pm>
61
    <suspend-to-mem enabled="no"/>
62
    <suspend-to-disk enabled="no"/>
63
  </pm>
64
  <devices>
65
    <emulator>/usr/libexec/qemu-kvm</emulator>
66
    <disk type="file" device="disk">
67
      <driver name="qemu" type="qcow2"/>
68
      <source file="/../libvirt/images/bitnami-erpnext-14.11.0-0-linux-vm-debian-11-x86_64-nami-disk1.qcow2"/>
69
      <backingStore/>
70
      <target dev="vdb" bus="virtio"/>
71
      <alias name="virtio-disk1"/>
72
      <address type="pci" domain="0x0000" bus="0x00" slot="0x0b" function="0x0"/>
73
    </disk>
74
    <controller type="usb" index="0" model="ich9-ehci1">
75
      <alias name="usb"/>
76
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x7"/>
77
    </controller>
78
    <controller type="usb" index="0" model="ich9-uhci1">
79
      <alias name="usb"/>
80
      <master startport="0"/>
81
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0" multifunction="on"/>
82
    </controller>
83
    <controller type="usb" index="0" model="ich9-uhci2">
84
      <alias name="usb"/>
85
      <master startport="2"/>
86
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x1"/>
87
    </controller>
88
    <controller type="usb" index="0" model="ich9-uhci3">
89
      <alias name="usb"/>
90
      <master startport="4"/>
91
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x2"/>
92
    </controller>
93
    <controller type="pci" index="0" model="pci-root">
94
      <alias name="pci.0"/>
95
    </controller>
96
    <controller type="virtio-serial" index="0">
97
      <alias name="virtio-serial0"/>
98
      <address type="pci" domain="0x0000" bus="0x00" slot="0x06" function="0x0"/>
99
    </controller>
100
    <controller type="scsi" index="0" model="virtio-scsi">
101
      <alias name="scsi0"/>
102
      <address type="pci" domain="0x0000" bus="0x00" slot="0x0a" function="0x0"/>
103
    </controller>
104
    <interface type="bridge">
105
      <mac address="52:54:00:29:00:87"/>
106
      <source bridge="br0"/>
107
      <target dev="vnet1"/>
108
      <model type="virtio"/>
109
      <alias name="net0"/>
110
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
111
    </interface>
112
    <serial type="pty">
113
      <source path="/dev/pts/9"/>
114
      <target type="isa-serial" port="0">
115
        <model name="isa-serial"/>
116
      </target>
117
      <alias name="serial0"/>
118
    </serial>
119
    <console type="pty" tty="/dev/pts/9">
120
      <source path="/dev/pts/9"/>
121
      <target type="serial" port="0"/>
122
      <alias name="serial0"/>
123
    </console>
124
    <channel type="unix">
125
      <source mode="bind" path="/var/lib/libvirt/qemu/channel/target/domain-7-bitnami_erpnext/org.qemu.guest_agent.0"/>
126
      <target type="virtio" name="org.qemu.guest_agent.0" state="disconnected"/>
127
      <alias name="channel0"/>
128
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
129
    </channel>
130
    <channel type="spicevmc">
131
      <target type="virtio" name="com.redhat.spice.0" state="disconnected"/>
132
      <alias name="channel1"/>
133
      <address type="virtio-serial" controller="0" bus="0" port="2"/>
134
    </channel>
135
    <input type="tablet" bus="usb">
136
      <alias name="input0"/>
137
      <address type="usb" bus="0" port="1"/>
138
    </input>
139
    <input type="mouse" bus="ps2">
140
      <alias name="input1"/>
141
    </input>
142
    <input type="keyboard" bus="ps2">
143
      <alias name="input2"/>
144
    </input>
145
    <graphics type="spice" port="5901" autoport="yes" listen="127.0.0.1">
146
      <listen type="address" address="127.0.0.1"/>
147
    </graphics>
148
    <sound model="ich6">
149
      <alias name="sound0"/>
150
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
151
    </sound>
152
    <video>
153
      <model type="qxl" ram="65536" vram="65536" vgamem="16384" heads="1" primary="yes"/>
154
      <alias name="video0"/>
155
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
156
    </video>
157
    <redirdev bus="usb" type="spicevmc">
158
      <alias name="redir0"/>
159
      <address type="usb" bus="0" port="2"/>
160
    </redirdev>
161
    <redirdev bus="usb" type="spicevmc">
162
      <alias name="redir1"/>
163
      <address type="usb" bus="0" port="3"/>
164
    </redirdev>
165
    <memballoon model="virtio">
166
      <alias name="balloon0"/>
167
      <address type="pci" domain="0x0000" bus="0x00" slot="0x08" function="0x0"/>
168
    </memballoon>
169
    <rng model="virtio">
170
      <backend model="random">/dev/urandom</backend>
171
      <alias name="rng0"/>
172
      <address type="pci" domain="0x0000" bus="0x00" slot="0x09" function="0x0"/>
173
    </rng>
174
  </devices>
175
  <seclabel type="dynamic" model="selinux" relabel="yes">
176
    <label>system_u:system_r:svirt_t:s0:c328,c377</label>
177
    <imagelabel>system_u:object_r:svirt_image_t:s0:c328,c377</imagelabel>
178
  </seclabel>
179
  <seclabel type="dynamic" model="dac" relabel="yes">
180
    <label>+107:+107</label>
181
    <imagelabel>+107:+107</imagelabel>
182
  </seclabel>
183 1 Jeremias Keihsler
</domain>
184
</code></pre>
185
186 12 Jeremias Keihsler
h3. set static IP address
187
188
taken from https://docs.bitnami.com/virtual-machine/faq/configuration/configure-static-address/
189
190
check link and current IPs
191
192
<pre><code class="shell">
193
sudo ifconfig
194
</code></pre>
195
196
<pre><code class="shell">
197
cd /etc/systemd/network
198
sudo touch 25-wired.network
199
</code></pre>
200
201
add following lines
202
203
<pre>
204
[Match]
205
Name=enp0s3
206
207
[Network]
208
Address=HOST-IP-ADDRESS
209
Gateway=GATEWAY-IP-ADDRESS
210
</pre>
211
212
restart service
213
214
<pre><code class="shell">
215
sudo systemctl restart systemd-networkd.service
216
</code></pre>
217
218 2 Jeremias Keihsler
h3. activate SSH-Server
219 1 Jeremias Keihsler
220 2 Jeremias Keihsler
taken from https://docs.bitnami.com/virtual-machine/faq/get-started/enable-ssh/
221 1 Jeremias Keihsler
222 2 Jeremias Keihsler
<pre><code class="shell">
223
sudo rm -f /etc/ssh/sshd_not_to_be_run
224
sudo systemctl enable ssh
225
sudo systemctl start ssh
226
</code></pre>
227 1 Jeremias Keihsler
228 3 Jeremias Keihsler
h3. ... password-based SSH auth (are you serious?)
229
230
maybe ok for testing .. 
231
taken from https://docs.bitnami.com/virtual-machine/faq/get-started/enable-ssh-password/
232
233
edit @/etc/ssh/sshd_config@ and add/modify the following line
234
235
<pre><code class="shell">
236
  PasswordAuthentication yes
237
</code></pre>
238
239
restart SSH server
240
241
<pre><code class="shell">
242
  sudo /etc/init.d/ssh force-reload
243
  sudo /etc/init.d/ssh restart
244
</code></pre>
245
246 28 Jeremias Keihsler
h3. ... and of course cert-based ..
247
248
from the remote machine just
249
250
<pre><code class="shell">
251
ssh-copy-id bitnami@example.com
252
</code></pre>
253
254
255 17 Jeremias Keihsler
h3. install 'dialog'
256
257
<pre><code class="shell">
258
sudo apt install dialog
259
</code></pre>
260
261 4 Jeremias Keihsler
h3. modify keyboard layout
262
263
taken from https://docs.bitnami.com/virtual-machine/faq/configuration/configure-keyboard/
264
265
<pre><code class="shell">
266
  sudo apt-get install keyboard-configuration console-setup
267
  sudo dpkg-reconfigure keyboard-configuration
268
  sudo systemctl restart keyboard-setup
269
</code></pre>
270
271 5 Jeremias Keihsler
h3. alias ll
272
273 6 Jeremias Keihsler
for everyone .. taken from https://www.server-world.info/en/note?os=Debian_11&p=initial_conf&f=2
274
275 5 Jeremias Keihsler
<pre><code class="shell">
276
sudo vim /etc/profile.d/command_alias.sh
277
</code></pre>
278
279
<pre>
280
# create new file
281
# add alias you'd like to set
282
alias ll='ls $LS_OPTIONS -l'
283
# alias l='ls $LS_OPTIONS -lA'
284
# alias rm='rm -i'
285
# alias cp='cp -i'
286
# alias mv='mv -i'
287
</pre>
288
289
<pre><code class="shell">
290
source /etc/profile.d/command_alias.sh
291
</code></pre>
292
293 13 Jeremias Keihsler
h3. Install the Wkhtmltopdf extension
294
295
taken from https://docs.bitnami.com/aws/apps/erpnext/configuration/install-wkhtmltopdf/
296
297
<pre><code class="shell">
298
find /opt/bitnami/common/bin -name fc-* | sudo xargs -I {} mv {} {}.bak
299 22 Jeremias Keihsler
sudo apt install zlib1g fontconfig libxrender1 libfreetype6 libxext6 libx11-6
300 14 Jeremias Keihsler
</code></pre>
301
302
Download the latest version of the package from the Wkhtmltopdf project releases page and install it. Replace the X.Y.Z and PLATFORM placeholders with the correct version and platform strings from the release filename.
303
304
https://github.com/wkhtmltopdf/wkhtmltopdf/releases/
305
306 15 Jeremias Keihsler
as of 2023-02-16 https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
307
308 14 Jeremias Keihsler
<pre><code class="shell">
309 13 Jeremias Keihsler
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/X.Y.Z/wkhtmltox_X.Y.Z.PLATFORM.deb
310
sudo apt install -f ./wkhtmltox_X.Y.Z.PLATFORM.deb
311
sudo /opt/bitnami/ctlscript.sh restart
312
</code></pre>
313
314 21 Jeremias Keihsler
h4. install alternative way?
315
316
without QT but with virtual X11-Server
317
318
https://packages.debian.org/bullseye/xvfb
319
https://installati.one/debian/11/wkhtmltopdf/
320
https://packages.debian.org/stable/wkhtmltopdf
321
322
needs some testing
323
324 23 Jeremias Keihsler
h4. Troubleshooting PDF formating issues
325 18 Jeremias Keihsler
326
taken from https://discuss.frappe.io/t/pdf-alignment-problem/34425/7
327
328
set the IP-adr. in @site_config.json@
329
330
<pre><code class="shell">
331
vim /opt/bitnami/erpnext/frappe-bench/sites/erpnext/site_config.json
332
</code></pre>
333
334 24 Jeremias Keihsler
replace @http:localhost@ with the @https://hostname-ip:443@
335 18 Jeremias Keihsler
336
<pre>
337 24 Jeremias Keihsler
 "host_name": "https://192.168.41.131:443"
338 18 Jeremias Keihsler
</pre>
339
340 20 Jeremias Keihsler
h4. Troubleshooting (is just a reminder ... I stumbled across but didn't do it, as there were no related issues yet)
341 13 Jeremias Keihsler
342
If you experience issues with display resolution on Linux platforms, they could be related to the xfonts-75dpi or xfonts-100dpi packages. Uninstall them by executing:
343
344
<pre><code class="shell">
345
sudo dpkg --remove --force-depends xfonts-75dpi
346
sudo dpkg --remove --force-depends xfonts-100dpi
347 18 Jeremias Keihsler
</code></pre>
348 13 Jeremias Keihsler
349 16 Jeremias Keihsler
h3. install weasyprint
350
351
taken from https://packages.debian.org/bullseye/weasyprint
352
353
<pre><code class="shell">
354
sudo apt install weasyprint
355
</code></pre>
356
357 25 Jeremias Keihsler
h2. automatic backup of ERPNext
358
359
<pre><code class="shell">
360
sudo vim /usr/local/bin/erpnext-backup.sh
361
</code></pre>
362
363
<pre><code class="shell">
364 26 Jeremias Keihsler
#!/bin/bash -l
365 1 Jeremias Keihsler
366 26 Jeremias Keihsler
# there is some 'magic' in the shebang, the '-l' is invoking the environment of the calling user (in this case 'bitnami')
367 1 Jeremias Keihsler
# JKE 2023-08-24
368 25 Jeremias Keihsler
cd /opt/bitnami/erpnext/frappe-bench
369 26 Jeremias Keihsler
bench backup-all-sites
370 25 Jeremias Keihsler
</code></pre>
371
372
<pre><code class="shell">
373
sudo chmod +x /usr/local/bin/erpnext-backup.sh
374 1 Jeremias Keihsler
</code></pre>
375
376 26 Jeremias Keihsler
<pre><code class="shell">
377
sudo vim /etc/cron.d/erpnext-backup
378
</code></pre>
379 1 Jeremias Keihsler
380 26 Jeremias Keihsler
<pre><code class="shell">
381
# JKE 2023-08-24
382
#
383
#    min  hr   dom  month dow     user    command
384
#    -    -    -    -     -
385
#    |    |    |    |     |
386
#    |    |    |    |     +-day of week (0-7) sunday=0 or 7
387
#    |    |    |    +---------month (1-12)
388
#    |    |    +----------------day of month (1-31)
389
#    |    +-----------------------hour (0-23)
390
#    +------------------------------min (0-59)
391
#
392
#     32   13   *    *     *       bitnami  /usr/local/bin/erpnext-backup.sh >> /home/bitnami/erpnext-backup.log 2>&1
393
     15   18   *    *     *       bitnami  /usr/local/bin/erpnext-backup.sh
394
</code></pre>
395
396
here is again some 'magic', there is no MTA available. So any output from the cron-job gets discarded.
397
use the upper construct to debug and append the output to @/home/bitnami/erpnext-backup.log@
398 25 Jeremias Keihsler
399 27 Jeremias Keihsler
the backups are stored in @/opt/bitnami/erpnext/frappe-bench/sites/erpnext/private/backups@
400 16 Jeremias Keihsler
401 7 Jeremias Keihsler
h3. migrate ERPNext to new server
402 1 Jeremias Keihsler
403 7 Jeremias Keihsler
h4. backup
404
405 5 Jeremias Keihsler
<pre><code class="shell">
406
cd /opt/bitnami/erpnext/frappe-bench
407 1 Jeremias Keihsler
bench backup-all-sites
408 7 Jeremias Keihsler
</code></pre>
409
410
files are saved very deep
411
412
<pre><code class="shell">
413
cd /opt/bitnami/erpnext/frappe-bench/sites/erpnext/private/backups/
414
</code></pre>
415
416
h4. restore
417
418
copy files to new server into @/home/bitnami@
419
420
<pre><code class="shell">
421
gunzip yyyymmdd_hhmmss-erpnext-database.sql.gz
422
</code></pre>
423
424 1 Jeremias Keihsler
connect to MariaDB (password is the same as application-password)
425 8 Jeremias Keihsler
taken from https://docs.bitnami.com/general/apps/erpnext/get-started/connect-mariadb/
426 7 Jeremias Keihsler
427
<pre><code class="shell">
428
mysql -u root -p
429
</code></pre>
430
431 1 Jeremias Keihsler
<pre><code class="sql">
432
DROP DATABASE bitnami_erpnext;
433 8 Jeremias Keihsler
\q
434
</code></pre>
435
436 9 Jeremias Keihsler
*as of 2023-02-07 restore seems not to work following the instructions*
437
438 8 Jeremias Keihsler
<pre><code class="shell">
439
cd /opt/bitnami/erpnext/frappe-bench/
440 5 Jeremias Keihsler
bench restore /home/bitnami
441
</code></pre>
442 1 Jeremias Keihsler
443
h2. vanilla install based on Ubuntu
444 10 Jeremias Keihsler
445 11 Jeremias Keihsler
h3. backup and load into test-site
446 10 Jeremias Keihsler
447
To create a staging site from a production site backup:
448
449
<pre><code class="shell">
450
cd <frappe/erpnext Verzeichnis>
451
mkdir ~/backup/
452
453
bench --site prod.example.net set-maintenance-mode on
454
bench --site prod.example.net set-config pause_scheduler 1
455
bench --site prod.example.net backup --with-files --compress --backup-path ~/backup/ 
456
# notice: Database Public & Private from stdout
457
bench --site prod.example.net set-maintenance-mode off
458
459
restore into other Staging instance:
460
461
bench new-site staging.example.net
462
bench --site staging.example.net set-maintenance-mode on
463
464
bench --site staging.example.net restore ~/backup/YYYYMMDD_HHMMSS-prod.example.net-database.sql.gz
465
  --with-public-files  ~/backup/YYYYMMDD_HHMMSS-prod.example.net-files.tar.gz
466
  --with-private-files ~/backup/YYYYMMDD_HHMMSS-prod.example.net-private-files.tar.gz
467
  MySQL root password:
468
469
bench --site staging.example.net mute_emails true
470
bench --site staging.example.net set-maintenance-mode off
471
rm -r ~/backup/
472
</code></pre>