Alfresco

Alfresco in Docker

prepare_acs.sh
apt install git docker docker-compose maven
mkdir myrepos
cd myrepos
# you need proxy for git,docker and wget ?
# git config --global http.proxy http://myproxy:3128
# git config --global https.proxy http://myproxy:3128
# export https_proxy='myproxy:3128'
# echo "HTTPS_PROXY=http://myproxy:3128" >>/etc/default/docker
# echo "HTTP_PROXY=http://myproxy:3128" >>/etc/default/docker
systemctl restart docker
git clone https://github.com/Alfresco/acs-deployment.git
cd acs-deployment-master/docker-compose
wget https://borwinius.de/wiki/lib/exe/fetch.php?media=linux:alfresco:acs_dk-compose.tgz -O acs_dk-compose.tgz
tar xvfz acs_dk-compose.tgz
# im tgz sind javascript-,totp-,systemmessages-AMPs drin.
# einmaliges Einsetzen des fqdn für SSl nötig
sed -i -e 's|mysrv.my.dom.ain|meintollerServer.meineDomain.com|g' share/Dockerfile
docker build share -t docker.io/alfresco/alfresco-share:23.4.1 -t docker.io/alfresco/alfresco-share-mytest:23.4.1
docker build repository -t alfresco/alfresco-content-repository-community:23.4.1 -t alfresco/acr-community-mytest:23.4.1

jetzt die Imagebezeichnungen und andere Einträge in compose.yaml entsprechend abändern
sowie eigene Zertifikate konfigurieren.
compose.yaml:

alfresco:
...
   -Dshare.host=meintollerServer.meineDomain.com
   -Dshare.port=443
   -Dshare.protocol=https
   -Dalfresco.host=meintollerServer.meineDomain.com
   -Dalfresco.port=8080
...
proxy:
   image: alfresco/alfresco-acs-nginx:3.4.2
   environment:
     DOMAIN: "meintollerServer.meineDomain.com"
     USE_SSL: "true"
   ports:
     - "443:443"
   volumes:
     - /var/etc/nginx/ssl/meintollerServer.key:/etc/nginx/ssl/cert.key
     - /var/etc/nginx/ssl/meintollerServer.crt:/etc/nginx/ssl/cert.crt

dann probieren ob der Dockercontainer hochfährt.

docker-compose up

webseite: https://meintollerServer.meineDomain.com
acs_dk-compose.tgz
wie lange läuft der Alfresco schon?

ps -eo pid,comm,lstart,args | grep java

Solrwebseite:

https://localhost:8443/solr

Vorsicht ! soll neuen Index aufbauen:

http://localhost:8080/solr4/admin/cores?action=FIX
http://localhost:8080/solr4/admin/cores?action=REINDEX&txid=1&acltxid=2&nodeid=3&aclid=4
Solr6 aktivieren
../solr/bin/solr start -a "-Dcreate.alfresco.defaults=alfresco,archive"

Alfresco7x

Transformation auf lokales libreoffice und inagmagick umstellen
apt install libreoffice imagemagick-6.q16hdri

start und restart der Datei localTransformationService.sh anpassen:

...
LOCAL_LIBREOFFICE=/usr/lib/libreoffice
LOCAL_IMAGEMAGICK=/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.11 
...
nohup java -XX:MinRAMPercentage=30 -XX:MaxRAMPercentage=50 \
           -DPDFRENDERER_EXE="$LOCAL_TRANSFORM_SERVICE_HOME/alfresco-pdf-renderer/alfresco-pdf-renderer" \
           -DLIBREOFFICE_HOME="$LOCAL_LIBREOFFICE" \
           -DIMAGEMAGICK_ROOT="$LOCAL_IMAGEMAGICK" \
           -DIMAGEMAGICK_DYN="$LOCAL_IMAGEMAGICK" \
           -DIMAGEMAGICK_EXE="/usr/bin/convert" \
           -DIMAGEMAGICK_CODERS="$LOCAL_IMAGEMAGICK/modules-Q16HDRI/coders" \
           -DIMAGEMAGICK_CONFIG="$LOCAL_IMAGEMAGICK/config-Q16HDRI" \
           -DACTIVEMQ_URL="failover:(tcp://localhost:61616)?timeout=3000" \
           -jar $LOCAL_TRANSFORM_SERVICE_HOME/bin/alfresco-transform-core-aio-boot-2.4.0.jar /tmp 2>> /dev/null >>/dev/null & echo $! > $PID_PATH_NAME
...

Sonstiges

Lizenz einspielen/erneuern
  • Backup ?
  • neue Lizenzdatei nach /usr/share/tomcat6/shared/alfresco/extension/license verschieben.
  • für neue Lizenzdatei den Eigentümer auf tomcat ändern.
  • über die Admin-Webseite neue Lizenz übernehmen.
Alfrescomodule anzeigen
java -jar /opt/alfresco/bin/alfresco-mmt.jar list /opt/alfresco/tomcat/webapps/alfresco.war
CMIS-QUERIES

Abfrage auf 20000 vergrößern: in Datei alfresco-global.properties 2 Zeilen einfügen und alfresco neustarten Achtung! die Abfragen belasten das System

system.acl.maxPermissionChecks=20000
solr.query.maqximumResultsFromUnlimitedQuery=20000
Benutzer-Synchronisierung
synchronization.import.cron=0 0/30 * * 1-5 ?
SOLR-Konfiguration
alf_data/solr/archive-SpaceStore/conf/solrcore.properties
alf_data/solr/workspace-SpaceStore/conf/solrcore.properties

solr testweise im Vordergrund starten:

alfresco-search-service/solr/bin/solr start -f -force

solr status anzeigen:

alfresco-search-service/solr/bin/solr status
CMIS-Download
Filedownload.groovy
  import org.apache.chemistry.opencmis.commons.*
  import org.apache.chemistry.opencmis.commons.data.*
  import org.apache.chemistry.opencmis.commons.enums.*
  import org.apache.chemistry.opencmis.client.api.*
  import org.apache.chemistry.opencmis.client.util.*
  Document file = (Document) session.GetObject("workspace://SpaceStore/abcde1234-5678-hijk-...");
  def cmis = new scripts.CMIS(session)
  cmis.download(file, "c:\\test\\DOKTEST.docx")
Datei löschen
curl -v -X DELETE "http://myadmin:mypassword@myalfresco:8080/alfresco/service/slingshot/doclib/action/file/site/mysite/documentLibrary/myfile.txt"

oder über selenium:

DelMyFile.java
//vorher: export CLASSPATH=".:selenium-server-standalone-3.13.0.jar"
 
import java.io.IOException;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;
 
public class DelMyFile {
 
    public static void main(String[] args) throws IOException, InterruptedException {
 
    String sPage = "https://myalfresco.my.dom.ain/share/page/";
    String sUser = "myuser";
    String sPass = "mypassword";
    String sDokp = "https://myalfresco.my.dom.ain/share/page/site/mysite/document-details?nodeRef=workspace://SpacesStore/abcd1234-76de-444b-9ff5-4e93faaa2c35";
    String delbutton  = "/html/body/div[2]/div[1]/div[3]/span/span[1]/span/button";
 
    System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--headless");
    chromeOptions.addArguments("--no-sandbox");
 
    WebDriver driver = new ChromeDriver(chromeOptions);
    driver.get(sPage);
    String titlelogin = driver.getTitle();
	System.out.println("The title of the Webpage is: " +titlelogin);
	WebElement userfield = driver.findElement(By.id("username"));
	WebElement passfield = driver.findElement(By.id("password"));
	WebElement loginbutton = driver.findElement(By.id("btn-login"));
    if (driver.getPageSource().contains("username")) {
        System.out.println("enter username");
	userfield.clear();
	userfield.sendKeys(sUser);
	System.out.println("enter password");
	passfield.clear();
	passfield.sendKeys(sPass);
	System.out.println("enter loginbutton");
	Thread.sleep(1000);
	loginbutton.click();
	String title = driver.getTitle();
	System.out.println("The title of the Webpage is: " +title);
	System.out.println("User "+sUser+" logged in successfully");
	// öffne Dokumentenwebseite und lösche diese
	driver.get(sDokp);
	title = driver.getTitle();
	System.out.println("The title of the Webpage is: " +title);
	System.out.println("Deleting file : " +sDokp);
	WebElement deletefield =  driver.findElement(By.linkText("Delete Document"));
	deletefield.click();
	deletefield =  driver.findElement(By.xpath(delbutton));
	deletefield.click();
        } 
    else {
            System.out.println("Fail");
    	}
	driver.close();
        driver.quit();
    }
}
gelöschte Dateien anzeigen
Anzeige der gelöschten Dateien pro Seite von 50 auf 100 erhöhen:

ändern der rowsPerPage von 50 auf 100 in Datei tomcatshare/webapps/share/components/console/trashcan.js und der trashcan-min.js .
dann auf https://myalfrescosrv/alfresco/service/index Refresh Webscripts und Clear Cache.

ganze Verzeichnisse uploaden

* auf dem alfrescoserver im tmp/-Verzeichnis ein Unterverzeichnis(z.B. import/) erstellen und mit Verzeichnissen und Dateien füllen und dafür Leserechte für tomcat konfigurieren.
* Website https://myecms.my.dom.ain/alfresco/service/bulkfsimport aufrufen und anmelden

"Import directory:" /tmp/import/
"Target space(Noderef or Path):" /Company Home/Sites/exitierendeSite/documentLibrary/
[Initiate Bulk import]

* Prüfen ob die Verzeichnisse und Dateien in die Site importiert wurden. * importierte Verzeichnisse in „import“ wieder löschen.
oder
* auf dem alfrescoserver im …contentstore/-Verzeichnis ein Unterverzeichnis(z.B. import/) erstellen und mit Verzeichnissen und Dateien füllen und dafür Leserechte für tomcat konfigurieren.
* Webseite https://myecms.my.dom.ain/alfresco/service/bulkfsimport/inplace aufrufen und anmelden

"Importverzeichnispath, relativ zum Store:" import
"Content Store:" default
"Pfad im Ziel Repository:" /Company Home/Sites/exitierendeSite/documentLibrary/
[Massenimport starten]

* Prüfen ob die Verzeichnisse und Dateien in die Site importiert wurden. * importierte Verzeichnisse in „import“ wieder löschen.

Ist Auditing eingeschaltet?
curl -u admin:geheim "http://localhost:8080/alfresco/service/api/audit/control"


Alfresco-Server schreibgeschützt

Eintrag in alfresco-global.properties:

server.allowWrite=false
Alfresco-Serverbenutzer einschränken

Eintrag in alfresco-global.properties:

server.allowedusers=John,Paul,George,Ringo


Suche nach ausgechekten Dateien:
SELECT D.* FROM cmis:document as D JOIN cm:checkedOut as T ON D.cmis:objectID = T.cmis.objectId

oder in der Website nach „Arbeitskopie“ suchen und das Bearbeiten abbrechen

ausgecheckte Datei als admin wieder einchecken:

in Webseite „View Working Copy“ / „Cancel Editing“

Anzahl der Benutzer
curl -u admin:meinpasswort "http://localhost:8080/alfresco/s/api/people?maxResults=2500" 
curl -u admin:admin "http://localhost:8080/alfresco/s/api/people?maxResults=2500" | grep userName | wc -l
Mimetypes